兩個關(guān)鍵詞
- ASC是升序排序
- DESC是降序排序
單鍵索引
- 為單個字段創(chuàng)建索引,如果這個字段不是在大多數(shù)場景下能過濾90%的數(shù)據(jù),或者數(shù)據(jù)量非常大的情況下,盡量建立組合索引,畢竟數(shù)據(jù)庫通過單鍵索引查詢后剩下的內(nèi)容沒有索引它就會逐個查找,消耗大量IO。
組合索引
- 為多個字段創(chuàng)建索引,一個經(jīng)常用來過濾數(shù)據(jù)的字段應(yīng)該放在索引首位,然后其他的字段次之。不要用過多的字段作為組合索引,評估這幾個字段能過濾掉的數(shù)據(jù)量,差不多就行了。
- 需要注意下列情況
建立ABC組合索引相當于建立了A,AB,ABC索引,如果執(zhí)行A或者AB或者ABC查詢都會使用索引查詢,
如果執(zhí)行AC則不會使用索引。
mongodb 是個特例,如果執(zhí)行AC也是會使用索引的。但是執(zhí)行BC不會使用索引
mongodb 查詢時可以不按照索引字段順序時使用索引查詢
稠密索引
- 所謂稠密索引就是數(shù)據(jù)表中每條記錄的字段值都成為索引的一部分,索引的這個字段后面跟一個存儲地址。這樣就可以先通過排好序的索引字段找到這個值,再根據(jù)索引里面存儲的存儲地址找到存儲記錄了。
稀疏索引
- 稀疏索引是為了避免數(shù)據(jù)量過大而導(dǎo)致索引過大設(shè)計的,它只根據(jù)一個存儲塊建立一條索引記錄,比如可能一個存儲塊中有100條記錄,但它只存儲這個存儲塊的第一條記錄,然后給一個存儲地址指向存儲塊,數(shù)據(jù)庫查找的時候先找到索引指向的存儲塊,再進入存儲塊查找準確的值。