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 ...