聯合索引 最左前綴索引 索引數據結構

數據庫性能優化1——正確創建索引以及最左前綴原則 http://blog.csdn.net/zhanglu0223/article/details/8713149

SQL聯合索引 與 單一列的索引 http://blog.csdn.net/shellching/article/details/7655793shell

1. 索引創建的原則

用於索引的最好的備選數據列是那些出如今WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。數據庫

僅僅出如今SELECT關鍵字後面的輸出數據列列表中的數據列不是很好的備選列
SELECTcol_a <- 不是備選列

FROMtbl1 LEFT JOIN tbl2ON tbl1.col_b = tbl2.col_c <- 備選列

WHEREcol_d = expr; <- 備選列


固然,顯示的數據列與WHERE子句中使用的數據列也可能相同。
咱們的觀點是輸出列表中的數據列本質上不是用於索引的很好的備選列。

2. 複合索引的創建以及最左前綴原則

索引字符串值的前綴(prefixe)。若是你須要索引一個字符串數據列,那麼最好在任何適當的狀況下都應該指定前綴長度。
例如,若是有CHAR(200)數據列,若是前面10個或20個字符都不一樣,就不要索引整個數據列。
索引前面10個或20個字符會節省大量的空間
你能夠索引CHAR、VARCHAR、BINARY、VARBINARY、BLOB和TEXT數據列的前綴。性能優化

假設你在表的state、city和zip數據列上創建了複合索引。索引中的數據行按照state/city/zip次序排列,
所以它們也會自動地按照state/city和state次序排列。這意味着,即便你在查詢中只指定了state值,
或者指定state和city值,MySQL也能夠使用這個索引。所以,這個索引能夠被用於搜索以下所示的數據列組合:
state, city, zip
state, city
state數據結構

3.索引數據結構——B樹性能

相關文章
相關標籤/搜索