国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

sql的索引選取原則

2019-11-14 10:13:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1、 表的某個(gè)字段值得離散度越高,該字段越適合選作索引的關(guān)鍵字。主鍵字段以及唯一性約束字段適合選作索引的關(guān)鍵字,原因就是這些字段的值非常離散。尤其是在主鍵字段創(chuàng)建索引時(shí),cardinality(基數(shù),集的勢(shì))的值就等于該表的行數(shù)。MySQL在處理主鍵約束以及唯一性約束時(shí),考慮周全。數(shù)據(jù)庫(kù)用戶創(chuàng)建主鍵約束的同時(shí),MySQL自動(dòng)創(chuàng)建主索引(PRimary index),且索引名稱為Primary;數(shù)據(jù)庫(kù)用戶創(chuàng)建唯一性索引時(shí),MySQL自動(dòng)創(chuàng)建唯一性索引(unique index),默認(rèn)情況下,索引名為唯一性索引的字段名。

2、 占用存儲(chǔ)空間少的字段更適合選作索引的關(guān)鍵字。例如,與字符串相比,整數(shù)字段占用的存儲(chǔ)空間較少,因此,較為適合選作索引關(guān)鍵字。

3、 存儲(chǔ)空間固定的字段更適合選作索引的關(guān)鍵字。與text類型的字段相比,char類型的字段較為適合選作索引關(guān)鍵字。

4、 Where子句中經(jīng)常使用的字段應(yīng)該創(chuàng)建索引,分組字段或者排序字段應(yīng)該創(chuàng)建索引,兩個(gè)表的連接字段應(yīng)該創(chuàng)建索引。

5、 更新頻繁的字段不適合創(chuàng)建索引,不會(huì)出現(xiàn)在where子句中的字段不應(yīng)該創(chuàng)建索引。

6、 最左前綴原則。

7、 盡量使用前綴索引。

引入索引的目的就是提高數(shù)據(jù)的檢查效率,因此索引關(guān)鍵字的選擇與select語(yǔ)句息息相關(guān)。這句話有兩個(gè)含義:一是,select語(yǔ)句的設(shè)計(jì)可以決定索引的設(shè)計(jì);索引的設(shè)計(jì)也同樣影響著select語(yǔ)句的設(shè)計(jì)。例如原則1與原則2,可以影響select語(yǔ)句的設(shè)計(jì);而select語(yǔ)句中的where子句、group by子句以及,又可以影響索引的設(shè)計(jì)。兩個(gè)表的連接字段應(yīng)該創(chuàng)建索引,外鍵約束一經(jīng)創(chuàng)建,MySQL會(huì)自動(dòng)地創(chuàng)建與外鍵相對(duì)應(yīng)的索引,這是由于外鍵字段通常是兩個(gè)表的連接字段。

  復(fù)合索引還有一個(gè)優(yōu)點(diǎn),它通過(guò)被稱為“最左前綴”(leftmost prefixing)的概念體現(xiàn)出來(lái)的。假設(shè)向一個(gè)表的多個(gè)字段(例如fristname、lastname、address)創(chuàng)建復(fù)合索引(索引名為fname_lname_address).當(dāng)where查詢條件是以下各種字段的組合是,MySQL將使用fname_lname_address索引。其他情況將無(wú)法使用fname_lname_address索引。可以理解:一個(gè)復(fù)合索引(firstname、lastname、address)等效于(firstname,llastname,age)、(firstname,lastname)以及(firstname)三個(gè)索引。基于最做前綴原則,應(yīng)盡量避免創(chuàng)建重復(fù)的索引,例如,創(chuàng)建了fname_lname_address索引后,就無(wú)需再first_name子段上單獨(dú)創(chuàng)建一個(gè)索引。

 

如果數(shù)據(jù)庫(kù)表的存儲(chǔ)引擎是MyISAM,那么創(chuàng)建主鍵的約束的同時(shí),MySQL會(huì)自動(dòng)創(chuàng)建主鍵索引。如果數(shù)據(jù)庫(kù)表的存儲(chǔ)引擎是InnoDB,那么創(chuàng)建主鍵約束的同時(shí),MySQL會(huì)自動(dòng)創(chuàng)建聚簇索引。

 MySQL還支持全文索引(fulltext),當(dāng)查詢數(shù)據(jù)量大的字符串信息時(shí),使用全文索引可以大幅提升字符串的檢索效率。需要注意的是,全文索引只能創(chuàng)建在char、varchar或者text字符串類型的字段上,且全文索引不支持前綴索引。

轉(zhuǎn)載自:http://blog.itpub.net/29272216/viewspace-1243730/


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 五台县| 商洛市| 濮阳市| 韩城市| 黄大仙区| 溆浦县| 叙永县| 三门县| 枣庄市| 赤水市| 临夏市| 兴化市| 临朐县| 黑龙江省| 逊克县| 吉隆县| 武胜县| 黄梅县| 嘉兴市| 前郭尔| 罗田县| 资溪县| 韩城市| 鄂温| 浦江县| 连城县| 若尔盖县| 宿松县| 尚志市| 沙雅县| 定兴县| 准格尔旗| 涡阳县| 克东县| 乃东县| 汉川市| 山丹县| 吉木乃县| 宜黄县| 阳东县| 玉门市|