mysql索引

索引的做用:
mysql索引在B樹中存儲。字符串是自動地壓縮前綴和結尾空間。
索引用於:
        快速找出匹配一個WHERE子句的行
        在多個表的查詢時,執行鏈接時加快了與其餘表中的行匹配的行的搜索
        若是排序或分組在一個可用索引的最左面前綴上進行,排序或分組一個表。若是全部鍵值部份跟隨DESC,鍵以倒序被讀取
        在某些狀況中,一個查詢能被優化來檢索值,不用諮詢數據文件。若是對某些表的全部使用的列是數字型的而且構成某些鍵的最左面前綴,爲了更快,值能夠從索引樹被檢索出來
 
索引的弊端:
        索引文件佔磁盤空間,若是有大量的索引,索引文件可能會比數據文件更快地到達最大的文件尺寸。
        索引文件加快了檢索,但增長了插入和刪除,以及更新索引列中的值的時間,由於寫操做不只涉及數據行,並且還會涉及索引。一個表擁有的索引越多,則寫操做的平均性能降低就越大
 
多列索引:
  若是若是一個多列索引存在於col1和col2上,適當的行能夠直接被取出。若是分開的單行列索引存在於col1和col2上,優化器試圖經過決定哪一個索引將找到更少的行並來找出更具限制性的索引而且使用該索引取行
  若是一個表有一個多列索引,任何最左面的索引前綴被優化器使用以找出行;若是列不構成索引的最左面前綴,mysql不能使用一個部分的索引
  若是LIKE參數是不以一個通配符起始的一個常數字符串,mysql也爲LIKE比較使用索引
  若是column_name是一個索引,使用column_name IS NULL的搜索將會使用索引
  mysql一般使用找出最少數量的行的索引。一個索引被用於與下列操做符比較的列:=、>、>=、<=、<、BETWEEN和一個 有一個非通配符前綴的列‘param%’的LIKE的列
對於一個多列索引,若是在WHERE子句的全部AND層次使用索引,將不使用索引優化查詢。爲了能偶使用索引優化查詢,必須把一個多列索引的前綴使用在一個AND條件組中
相關文章
相關標籤/搜索