彙集(clustered)索引性能
數據行的的物理順序與列值(通常主鍵事務那一列)的邏輯順序相同,一個表中只能有一個彙集索引。spa
一個表就像之前用的新華字典,彙集索引就像拼音目錄,而每一個字存放的頁碼就是數據的物理地址,若是查詢一個字,只需查詢該字對應在字典拼音目錄對應的頁碼,就能夠查詢到這個字所在的位置,而拼音目錄對應的A-Z的字順序,和新華字典實際存儲的字的順序A-Z也是同樣的。數據行的物理順序與列值的順序相同,若是查詢的id比較靠後的數據,那麼這行數據的地址在磁盤中的物理地址也會比較靠後。並且因爲物理地址排列方式與彙集索引的順序相同,因此就只能創建彙集索引。指針
彙集索引的好處是索引的葉節點就是對應的數據節點,能夠直接獲取到對應的所有列的數據,而非彙集索引在索引沒有覆蓋到對應的列的時候須要進行二次查詢,所以在查詢方面,彙集索引的速度每每會更佔優點。blog
非彙集索引排序
該索引中索引的邏輯順序與磁盤上的物理存儲順序不一樣,一個表中能夠有多個非彙集索引。索引
非彙集索引就像字典中的偏旁字典,它的結構順序與實際存放順序不必定一致。事務
非彙集索引的葉節點 仍然是索引節點,只是有一個指針指向對應的數據塊,若是使用非彙集索引查詢,而查詢列中包含了其餘該索引沒有覆蓋的列,那麼還要進行第二次查詢,查詢節點上對應的數據行的數據。搜索
彙集索引對於那些常常要搜索範圍值的列特別有效。使用匯集索引找到包含第一個值的行後,即可以確保包含後續索引值的行在物理相鄰。例如,若是應用程序執行 的一個查詢常常檢索某一日期範圍內的記錄,則使用匯集索引能夠迅速找到包含開始日期的行,而後檢索表中全部相鄰的行,直到到達結束日期。這樣有助於提升此 類查詢的性能。一樣,若是對從表中檢索的數據進行排序時常常要用到某一列,則能夠將該表在該列上彙集(物理排序),避免每次查詢該列時都進行排序,從而節省成本。程序