索引必知必會 索引原理 沒有索引的時候,搜索是全表進行掃描,速度很慢; 當我們建立了一個索引後,會生成一個索引的數據結構(例如索引二叉樹) 代價 索引會占用磁碟空間 對增刪改語句的效率有影響 -> 結合實際場景是查詢業務多還是增刪改業務多來判斷 所以不能盲目添加 規則 頻繁作為查詢條件的欄位可以創建 ...
索引必知必會
索引原理
沒有索引的時候,搜索是全表進行掃描,速度很慢;
當我們建立了一個索引後,會生成一個索引的數據結構(例如索引二叉樹)
代價
- 索引會占用磁碟空間
- 對增刪改語句的效率有影響 -> 結合實際場景是查詢業務多還是增刪改業務多來判斷
所以不能盲目添加
規則
- 頻繁作為查詢條件的欄位可以創建索引
- 唯一性太差的欄位不適合單獨創建索引,即使頻繁查詢
- 頻繁更新的欄位不適合創建索引
- 不會出現在where子句中的欄位不要創建索引
索引類型
- 主鍵索引(primary key)
- 唯一索引(unique key)
因為要判斷是否唯一,也是需要查詢全表的 - 普通索引(index)
- 全文索引(fulltext)適用於MyISAM
實際開發中很少用這個索引,一般用Solr或者ElasticSearch
索引的使用
查詢索引
show indexes from 表名;
show keys from 表名;
添加索引
create [unique] index 索引名 on 表名 (列名);
alter table 表名 add [unique] index 索引名 (列名);
添加主鍵索引
alter table 表名 add primary key (列名);
註:在某表某列創建的這個索引,只對該列有效,即查詢時使用該列作為條件才有效果
如果某列的值不會重覆,則優先考慮unique索引,否則使用普通索引
刪除索引
drop index 索引名 on 表名;
刪除主鍵索引
alter table 表名 drop primary key;
後續再更新索引調優的內容