給兩個字段建立一個組合索引和分別建立單鏈索引有什么不同


例如你有一個   學生表。

字段包含  學號, 班級, 姓名,性別, 出生年月日。

 

你創建一個 組合索引  ( 班級, 姓名)

那么

SELECT * FROM  學生表  WHERE  班級='20103'  AND  姓名='張三'   將使用索引.

SELECT * FROM  學生表  WHERE  班級='20103'      將使用索引 .

SELECT * FROM  學生表  WHERE  姓名='張三'     將不使用索引。

 

刪除掉上面的索引

再創建兩個 獨立索引

索引1 ( 班級)

索引2 ( 姓名)

 

那么

SELECT * FROM  學生表  WHERE  班級='20103'  AND  姓名='張三'   將根據數據庫的分析信息, 自動選擇使用索引1或者索引2中的一個  (理論上會使用 索引2, 因為 姓名=張三的人少, 優先找到所有 姓名為 張三的人以后, 然后再從這些數據中, 找班級 = '20103'  

 .

 

SELECT * FROM  學生表  WHERE  班級='20103'      將使用索引1 .

SELECT * FROM  學生表  WHERE  姓名='張三'     將使用索引2

 

總結: 組合索引是組合條件查詢時有條件查詢的順序很重要,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM