壹個表可能涉及兩個數據結構(文件),壹個是表本身,它存儲表中的數據,另壹個是索引。指數是什麽?就是按照規律排列壹個或幾個字段(組合索引),然後在字段所在的行(表中)附上數據的物理地址。例如,我們有壹個名為“年齡”的字段。如果我們想要選擇某個年齡的所有行,我們可能需要掃描整個表。但是,如果在這個年齡建立索引,將根據年齡值在索引中建立壹個排列,這樣就可以在索引中快速定位,而無需掃描整個表。
為什麽性別不適合索引?因為訪問索引需要付出額外的IO開銷,所以從索引中得到的只是地址。如果妳真的想訪問數據,妳仍然需要IO表壹次。如果想從表中的654.38+0萬行數據中得到幾個數據,使用索引快速定位和訪問索引是非常值得的。但如果妳從654.38+0萬行數據中取50萬行數據,比如性別字段,那麽妳需要訪問索引50萬次,然後訪問表50萬次,總開銷不會少於直接對表進行壹次完整的掃描。
當然,壹切都不是絕對的。如果將性別字段設置為表的聚集索引,肯定會將該字段的查詢速度提高壹半左右。聚集索引指的是表中的數據按哪個字段排序。因此,只能有壹個聚集索引,使用聚集索引不會付出額外的IO開銷。當然,妳必須願意在性別領域使用聚集索引這樣有價值的資源。
————————————————
原文鏈接:/win32 fanex/article/details/79513857