什么是索引?
提起索引,應(yīng)該不會(huì)感到陌生,若說(shuō)它就是目錄,大概都知道了,數(shù)據(jù)庫(kù)的索引與書(shū)的目錄很相似,都叫index.書(shū)的內(nèi)容相當(dāng)于數(shù)據(jù)庫(kù)表中的數(shù)據(jù),書(shū)的目錄通過(guò)頁(yè)碼指向書(shū)的內(nèi)容,同樣,索引也記錄了表中的關(guān)鍵值,提供了指向表中行的指針.書(shū)的目錄使讀者很快的找到想看的內(nèi)容,而不必翻看書(shū)的每一頁(yè),索引使得數(shù)據(jù)庫(kù)應(yīng)用程序能夠不掃描全表而找到想要的數(shù)據(jù).
索引是不是多多益善?
索引可以創(chuàng)建在一列或多列的組合上,也可以在數(shù)據(jù)庫(kù)表的多個(gè)列上建立不同的索引,但這些列應(yīng)該是經(jīng)常作為查詢條件的列.需要指出的是,并不是表上的索引越多越好,在數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中,還是需要為表選擇一些合適的索引。寧缺勿爛,這是建立索引時(shí)的一個(gè)具體選擇。在理論上,雖然一個(gè)表可以設(shè)置無(wú)限的索引,但表中的索引越多,維護(hù)索引所需要的開(kāi)銷也就越大。每當(dāng)數(shù)據(jù)表中記錄有增加、刪除、更新變化的時(shí)候,數(shù)據(jù)庫(kù)系統(tǒng)都需要對(duì)所有索引進(jìn)行更新。
索引的分類
索引可以分為三類:聚集索引(clustered index),非聚集索引,唯一性索引(unique index).根據(jù)索引字段組成又有復(fù)合索引的說(shuō)法,復(fù)合索引可以是唯一索引也可以不是唯一索引.一個(gè)表上最多創(chuàng)建一個(gè)聚集索引和249個(gè)非聚集索引.
創(chuàng)建索引的條件
(1)為經(jīng)常出現(xiàn)在關(guān)鍵字orderby、group by、distinct后面的字段,建立索引。
(2)在union等集合操作的結(jié)果集字段上,建立索引。
(3)為經(jīng)常用作查詢選擇的字段,建立索引。
(4)在經(jīng)常用作表連接的屬性上,建立索引。
(5)考慮使用索引覆蓋。對(duì)數(shù)據(jù)很少被更新的表,如果用戶經(jīng)常只查詢其中的幾個(gè)字段,可以考慮在這幾個(gè)字段上建立索引,從而將表的掃描改變?yōu)樗饕膾呙琛?/p>
創(chuàng)建索引的限制
(1)限制索引數(shù)目。
(2)唯一性太差的字段不適合單獨(dú)創(chuàng)建索引;
(3)更新頻繁的字段不適合創(chuàng)建索引;
(4)不會(huì)做為查詢條件的字段不創(chuàng)建索引