數(shù)據(jù)庫索引的創(chuàng)建原則

建立索引的原則:

  1. 定義主鍵的數(shù)據(jù)列一定要建立索引茬暇。
  2. 定義有外鍵的數(shù)據(jù)列一定要建立索引。
  3. 對于經(jīng)常查詢的數(shù)據(jù)列最好建立索引。
  4. 對于需要在指定范圍內(nèi)的快速或頻繁查詢的數(shù)據(jù)列;
  5. 經(jīng)常用在WHERE子句中的數(shù)據(jù)列。
  6. 經(jīng)常出現(xiàn)在關(guān)鍵字order by、group by呻引、distinct后面的字段,建立索引吐咳。如果建立的是復(fù)合索引逻悠,索引的字段順序要和這些關(guān)鍵字后面的字段順序一致元践,否則索引不會被使用。
  7. 對于那些查詢中很少涉及的列童谒,重復(fù)值比較多的列不要建立索引单旁。
  8. 對于定義為text、image和bit的數(shù)據(jù)類型的列不要建立索引饥伊。
  9. 對于經(jīng)常存取的列避免建立索引
  10. 限制表上的索引數(shù)目象浑。對一個存在大量更新操作的表,所建索引的數(shù)目一般不要超過3個琅豆,最多不要超過5個愉豺。索引雖說提高了訪問速度,但太多索引會影響數(shù)據(jù)的更新操作茫因。
  11. 對復(fù)合索引蚪拦,按照字段在查詢條件中出現(xiàn)的頻度建立索引。在復(fù)合索引中冻押,記錄首先按照第一個字段排序驰贷。對于在第一個字段上取值相同的記錄,系統(tǒng)再按照第二個字段的取值排序洛巢,以此類推饱苟。因此只有復(fù)合索引的第一個字段出現(xiàn)在查詢條件中,該索引才可能被使用,因此將應(yīng)用頻度高的字段狼渊,放置在復(fù)合索引的前面,會使系統(tǒng)最大可能地使用此索引类垦,發(fā)揮索引的作用狈邑。

組合多個索引
一個單獨的索引掃描只能用于這樣的條件子句:使用被索引字段和索引操作符類中的操作符, 并且這些條件以AND連接蚤认。假設(shè)在(a, b)上有一個索引米苹, 那么類似WHERE a = 5 AND b = 6的條件可以使用索引,但是像WHERE a = 5 OR b = 6的條件就不能直接使用索引砰琢。
一個類似WHERE x =42 OR x = 47 OR x = 53 OR x = 99 這樣的查詢可以分解成四個在x上的獨立掃描蘸嘶,每個掃描使用一個條件, 最后將這些掃描的結(jié)果OR 在一起陪汽,生成最終結(jié)果训唱。另外一個例子是,如果我們在x 和y上有獨立的索引挚冤,一個類似WHERE x = 5 AND y = 6 這樣的查詢可以分解為幾個使用獨立索引的子句况增,然后把這幾個結(jié)果AND 在一起,生成最終結(jié)果训挡。

在大多數(shù)最簡單的應(yīng)用里澳骤,可能有多種索引組合都是有用的歧强,數(shù)據(jù)庫開發(fā)人員必須在使用哪個索引之間作出平衡。有時候多字段索引是最好的为肮,有時候創(chuàng)建一個獨立索引并依靠索引組合是最好的摊册。比如,假如你的查詢有時候只涉及字段x颊艳,有時候只涉及字段y茅特,有時候兩個字段都涉及, 那么你可能會選擇在x和y上創(chuàng)建兩個獨立的索引籽暇, 然后依靠索引組合來處理同時使用兩個字段的查詢温治。你也可以在(x, y)上創(chuàng)建一個多字段索引, 它在同時使用兩個字段的查詢通常比索引組合更高效戒悠,但是對那些只包含y的查詢幾乎沒有用熬荆,因此它不能是唯一一個索引。一個多字段索引和y上的獨立索引可能會更好绸狐。因為對那些只涉及x的查詢卤恳, 可以使用多字段索引,但是它會更大寒矿,因此也比只在x上的索引更慢突琳。最后一個選擇是創(chuàng)建三個索引, 但是這種方法只有在表的更新遠比查詢少符相,并且所有三種查詢都很普遍的情況下才是合理的拆融。如果其中一種查詢比其它的很多,那么你可能更愿意僅僅創(chuàng)建兩種匹配更常見查詢的索引啊终。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镜豹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蓝牲,更是在濱河造成了極大的恐慌趟脂,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件例衍,死亡現(xiàn)場離奇詭異昔期,居然都是意外死亡,警方通過查閱死者的電腦和手機佛玄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門硼一,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梦抢,你說我怎么就攤上這事欠动。” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵具伍,是天一觀的道長翅雏。 經(jīng)常有香客問我,道長人芽,這世上最難降的妖魔是什么望几? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮萤厅,結(jié)果婚禮上橄抹,老公的妹妹穿的比我還像新娘。我一直安慰自己惕味,他們只是感情好楼誓,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著名挥,像睡著了一般疟羹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禀倔,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天榄融,我揣著相機與錄音,去河邊找鬼救湖。 笑死愧杯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的鞋既。 我是一名探鬼主播力九,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼邑闺!你這毒婦竟也來了跌前?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤检吆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后程储,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹭沛,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年章鲤,在試婚紗的時候發(fā)現(xiàn)自己被綠了摊灭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡败徊,死狀恐怖帚呼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤煤杀,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布眷蜈,位于F島的核電站,受9級特大地震影響沈自,放射性物質(zhì)發(fā)生泄漏酌儒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一枯途、第九天 我趴在偏房一處隱蔽的房頂上張望忌怎。 院中可真熱鬧,春花似錦酪夷、人聲如沸榴啸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸥印。三九已至,卻和暖如春腥例,著一層夾襖步出監(jiān)牢的瞬間辅甥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工燎竖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留璃弄,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓构回,卻偏偏與公主長得像夏块,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纤掸,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容