MySQL索引篇----索引常見面試問題

哪些狀況須要建立索引mysql

  1. 主鍵⾃動建⽴惟⼀索引
  2. 頻繁做爲查詢條件的字段應該建立索引
  3. 多表關聯查詢中,關聯字段應該建立索引 on 兩邊都要建立索引
  4. 查詢中排序的字段,應該建立索引
  5. 頻繁查找字段 覆蓋索引
  6. 查詢中統計或者分組字段,應該建立索引 group by

哪些狀況不須要建立索引sql

  1. 表記錄太少
  2. 常常進⾏增刪改操做的表
  3. 頻繁更新的字段
  4. where條件⾥使⽤頻率不⾼的字段

爲何使⽤組合索引
mysql建立組合索引的規則是⾸先會對組合索引的最左邊的,也就是第⼀個name字段的數據進⾏排序,在第⼀個字段的排序基礎上,而後再對後⾯第⼆個的cid字段進⾏排序。其實就至關於實現了相似order by name cid這樣⼀種排序規則。
爲了節省mysql索引存儲空間以及提高搜索性能,可建⽴組合索引(能使⽤組合索引就不使⽤單列索引)
例如:
建立組合索引(至關於建⽴了col1,col1 col2,col1 col2 col3三個索引):
ALTER TABLE 'table_name' ADD INDEX index_name('col1','col2','col3')性能

⼀顆索引樹上建立3個索引 : 省空間
三顆索引樹上分別建立1個索引
更容易實現覆蓋索引
使⽤ 遵循最左前綴原則
一、前綴索引 like a%
二、從左向右匹配直到遇到範圍查詢 > < between like
建⽴組合索引 (a,b,c,d)
where a=1 and b=1 and c>3 and d=1
到c>3停⽌了 因此d ⽤不到索引了
怎麼辦?(a,b,d,c)
案例:
mysql> create table t1 (id int primary key ,a int ,b int,c int,d int);
mysql> alter table t1 add index idx_com(a,b,c,d);
mysql> drop index idx_com on t1;
mysql> create index idx_com on t1(a,b,d,c);mysql索引

相關文章
相關標籤/搜索