sql復合索引使用和注意事項

2021-08-20 09:35:21 字數 1414 閱讀 3527

1、定義:

單一索引:

單一索引是指索引列為一列的情況,即新建索引的語句只實施在一列上;     

復合索引:

復合索引也叫組合索引;

使用者可以在多個列上建立索引,這種索引叫做復合索引(組合索引)。

復合索引在資料庫操作期間所需的開銷更小,可以代替多個單一索引;    

同時有兩個概念叫做窄索引和寬索引,窄索引是指索引列為1-2列的索引,寬索引也就是索引列超過2列的索引;     

設計索引的乙個重要原則就是能用窄索引不用寬索引,因為窄索引往往比組合索引更有效;

2、使用:

建立復合索引 :

create index columnid on table1(col1,col2,col3) ;
查詢語句: 

select * from table1 where col1= a and col2= b and col3 = c
這時候查詢優化器,不在掃瞄表了,而是直接的從索引中拿資料,因為索引中有這些資料,這叫覆蓋式查詢,這樣的查詢速度非常快;  

3、注意事項:

1、對於復合索引,在查詢使用時,最好將條件順序按找索引的順序,這樣效率最高;    

select * from table1 where col1=a and col2=b and col3=d
如果使用

where col2=b and col1=a
或者 

where col2=b
將不會使用索引。

2、何時是用復合索引     根據where條件建索引是極其重要的乙個原則;     注意不要過多用索引,否則對錶更新的效率有很大的影響,因為在操作表的時候要化大量時間花在建立索引中

3、復合索引會替代單一索引麼     如果索引滿足窄索引的情況下可以建立復合索引,這樣可以節約空間和時間

4、備註:

對一張表來說,如果有乙個復合索引 on   (col1,col2),就沒有必要同時建立乙個單索引 on col1;    

如果查詢條件需要,可以在已有單索引 on col1的情況下,新增復合索引on (col1,col2),對於效率有一定的提高;     

同時建立多欄位(包含5、6個字段)的復合索引沒有特別多的好處,相對而言,建立多個窄字段(僅包含乙個,或頂多2個字段)的索引可以達到更好的效率和靈活性。

5、例子:

mysql復合索引注意事項

概念 單一索引是指索引列為一列的情況,即新建索引的語句只實施在一列上 使用者可以在多個列上建立索引,這種索引叫做復合索引 組合索引 復合索引在資料庫操作期間所需的開銷更小,可以代替多個單一索引 同時有兩個概念叫做窄索引和寬索引,窄索引是指索引列為1 2列的索引,寬索引也就是索引列超過2列的索引 設計...

SQL的索引使用注意事項

1 在sql中盡量少用 和!下面的查詢即使在cust rating列有乙個索引,查詢語句仍然執行一次全表掃瞄。select cust id,cust name from customers where cust rating aa 把上面的語句改成如下的查詢語句,這樣,在採用基於規則的 優化器而不是...

索引使用注意事項

1.索引不會包含有 null 值的列只要列中包含有 null 值都將不會被包含在索引中,復合索引中只要有一列含有 null 值,那麼這一列對於此復合索引就是無效的。所以我們在資料庫設計時不要讓字段的預設值為 null 應該用 0 乙個特殊的值或者乙個空串代替空值。2.復合索引 比如有一條語句是這樣的...