Mysql的一些簡單優化

2021-07-15 08:42:39 字數 1055 閱讀 4921

1.5.6以上預設innodb,其他預設搜尋引擎為myisam

2.在對於金融問題資料誤差,採用decimal,獲取採用bigint型別存 金額*1000 or 10000 or 100000,避免使用浮點去進行計算

3.設計索引的原則:

1).最適合索引的列是出現在where子句中的列,或連線子句中指定的列,而不是出現在select關鍵字的選擇列表的列。

2).使用唯一索引。對於唯一值的列,索引的效果最好,具有多個重複值的列,其索引效果極差

4.只有當索引的列順序和order by 子句的順序完全一致,並且所有列的排序方向一致的時候,mysql才能夠使用索引來對結果做排序。(如果查詢需要關聯多個表,則只有當order by 子句引用的字段全部為第一張表的時候,才能使用索引做排序)

5.採用join 代替子查詢,減少臨時表的產生,在join鏈結表的字段最好加索引

6.使用procedure analyse()方法優化表的字段型別

7.建議使用in代替or

8.如果不使用myisam,也保留16-32m的key_buffer_size大小給予磁碟的臨時表索引,使用show status like 'key_read%',key_reads/key_reads_request的大小正常情況小於0.01

9.當翻頁到好後面的時候,我們可以通過條件查詢到表的主鍵,然後通過主鍵重新inner join 該錶去查需要的字段

例如:select from table inner join ( select from table where x.cols="***x"  limit 100000,10) as x using(); ,不過正常趕腳都不會有使用者翻到那麼後面——__——||||

10.對於選擇性非常低的列,可以增加特殊的索引來做排序

11.explain的type顯示的是訪問型別,是較為重要的乙個指標,結果值從好到壞依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all

mysql的一些優化

前言 sql優化,是一種概率層面的優化。至於是否實際使用了我們的優化,需要通過explain進行推測。注意 服務層中有sql優化器,可能會影響我們的優化,同時註明 sql的優化前提是有索引 有索引 有索引 in和exists的使用場景 select from a where exists selec...

一些 Mysql 的優化經驗

一些 mysql 的 優化經驗 從資料庫結構做起 字段型別的定義時遵循以下規則 選用字段長度最小 優先使用定長型 盡可能的定義 not null 數值型字段中避免使用 zerofill 如果要儲存的資料為字串,且可能值已知且有限,優先使用 enum 或 set 索引的優化至關重要 以下如果沒有特殊說...

mysql常用的一些優化

深入淺出mysql資料庫開發,優化,管理維護 定期分析表analyze 如果已經刪除了表的一大部分,或者如果您已經對含有可變長度行的表 含有 varchar,blob 或 text 列的表 進行了很多更改,則應使用 optimize table。被刪除的記錄被保持在鏈結清單中,後續的 insert ...