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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

(Mysql 四)普通索引(BTREE索引)的使用

2019-11-08 20:27:57
字體:
供稿:網(wǎng)友

MySQL中,普通索引,也就是BTREE索引分兩類,一個是單列索引 另一個是多列索引

1.索引的作用:

當(dāng)一個數(shù)據(jù)表只有很少量的數(shù)據(jù)時,索引體現(xiàn)不了他的價值。但若是一個表有10w多的數(shù)據(jù)時,查找數(shù)據(jù)就要全表查找,最差要查找10w個數(shù)據(jù),太慢了,若是用索引的話,就會大大減少時間,例如對 score字段做一個索引,索引會生成一個文件,查找數(shù)據(jù)就到索引文件中查找,又因為索引出來的數(shù)據(jù)是已經(jīng)排好序的,所以查找時,數(shù)據(jù)庫會用類似二分法的查找,這樣會比不用索引快很多倍。

2.單列索引和多列索引

一,單列索引:

 單列索引是給單個字段做索引,如給math字段。

alter  table zje add index math_index( math );        //作用是給 zje表 中的math字段加一個索引,索引名叫 math_index

用命令 show index from zje;可以查看是否建立了索引:可以看到 存在 math_index 索引的信息建立索引后,我們就要使用索引,索引一般是用于查找信息(用select語句)注意:使用索引時,不能select * ,這樣的話,索引是無法使用的,select后面跟的應(yīng)該包含索引所在的字段,例如上面我設(shè)置了 math字段的索引為 math_index則就要寫成 select math from zje;(selct math,english from zje ;也可以,只要有math字段就行)因為索引生成索引文件,里面放的是索引對應(yīng)字段的數(shù)據(jù)。使用 select math from zje;得出的結(jié)果:可以看出,數(shù)據(jù)是應(yīng)該排好序的,因為只要是用到索引,被查找后的字段都會被排好序的。刪除索引:alter table zje drop index math_index;                  //刪除zje表中的 名為 math_index 的索引二,多列索引:多列索引是一個索引對應(yīng)多個字段的數(shù)據(jù)。例如我們想查找 數(shù)學(xué)成績>60 且 英語成績 >60 的學(xué)生。可以用多列索引,當(dāng)然你說用2個單列索引,分別是數(shù)學(xué) 和 英語的索引行不行?其實也是可以的,但也有區(qū)別,下面會講解:創(chuàng)建一個多列索引:alter table zje add index indexes(math,english);    //在zje表中創(chuàng)建一個 為名 indexes 的多列索引,包含 math,english字段。感興趣的可以用 show index from zje;查看是否有創(chuàng)建。然后對zje表:select  math,english  from zje where math>60 and english>60;     //在zje表中找出數(shù)學(xué)和英語成績都高于60的數(shù)據(jù)可以看出,數(shù)據(jù)也是排好序的。接下來介紹 多列索引的一個重要性質(zhì):最左前綴:最左前綴的意思是,例如我創(chuàng)建的多列索引是 (math,english)這樣表示的,則:
select  math  from zje ;select  math,english  from zje ;上面的寫法都可以使用多列索引,第一行的寫法相當(dāng)于math的單列索引而select  english  from zje ;則會使用索引失效,因為他不是math開頭刪除多列索引跟刪除單列索引一樣。-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------最后講回一開始的問題,既然多列索引的表現(xiàn)形式跟多設(shè)置幾個單列索引沒什么不同,那為什么還要有多列索引呢?因為即使設(shè)置了多個單列索引,但是數(shù)據(jù)庫在搜索數(shù)據(jù)時,會挑出一個最嚴(yán)格的索引使用,其二是一個表中,索引是越少越好的
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 卢氏县| 枣庄市| 包头市| 东光县| 福贡县| 河间市| 通榆县| 霸州市| 永城市| 曲阳县| 定南县| 板桥市| 巩义市| 彩票| 旌德县| 绥阳县| 五原县| 昌图县| 博白县| 拜泉县| 灵璧县| 宁德市| 章丘市| 中方县| 铜山县| 喀喇沁旗| 金门县| 武平县| 积石山| 平远县| 乐陵市| 甘谷县| 招远市| 诏安县| 太仆寺旗| 当雄县| 句容市| 兰西县| 永福县| 巧家县| 湘阴县|