sql索引優化

 

1. 索引得分類

普通索引:即一個索引只包含單個列,一個表能夠有多個單列索引mysql

惟一索引:索引列的值必須惟一,但容許有空值sql

複合索引:即一個索引包含多個列函數

聚簇索引(彙集索引):並非一種單獨的索引類型,而是一種數據存儲方式。具體細節取決於不一樣的實現,InnoDB的聚簇索引其實就是在同一個結構中保存了B-Tree索引(技術上來講是B+Tree)和數據行。spa

非聚簇索引:不是聚簇索引,就是非聚簇索引3d

基礎語法blog

查看索引索引

SHOW INDEX FROM table_name\G字符串

建立索引table

CREATE  [UNIQUE ] INDEX indexName ON mytable(columnname(length));效率

ALTER TABLE 表名 ADD  [UNIQUE ]  INDEX [indexName] ON (columnname(length))

刪除索引

DROP INDEX [indexName] ON mytable;

 

 2.索引策略

策略1.儘可能全值匹配

策略2.最佳左前綴法則

若是索引了多列,要遵照最左前綴法則。指的是查詢從索引的最左前列開始而且不跳過索引中的列。

策略3.不在索引列上作任何操做

不在索引列上作任何操做(計算、函數、(自動or手動)類型轉換),會致使索引失效而轉向全表掃描

策略4.範圍條件放最後

中間有範圍查詢會致使後面的索引列所有失效

 策略5.覆蓋索引儘可能用

策略6.不等於要甚用

mysql 在使用不等於(!= 或者<>)的時候沒法使用索引會致使全表掃描

若是定要須要使用不等於,請用覆蓋索引

 策略7.Null/Not 有影響

在字段爲not null的狀況下,使用is null 或 is not null 會致使索引失效

 

自定義爲NULL或者不定義,is not null 的狀況會致使索引失效

策略8.Like查詢要小心

策略9.字符類型加引號

字符串不加單引號索引失效

 策略10.OR改UNION效率高

 

相關文章
相關標籤/搜索