SQL索引怎么創(chuàng)建使用

這篇文章主要講解了“SQL索引怎么創(chuàng)建使用”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“SQL索引怎么創(chuàng)建使用”吧!

成都創(chuàng)新互聯(lián)成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)公司成都網(wǎng)站制作網(wǎng)站設(shè)計、網(wǎng)站定制、全網(wǎng)營銷推廣微信平臺小程序開發(fā)、微信公眾號開發(fā)、成都網(wǎng)站推廣服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為被動防護網(wǎng)企業(yè)提供源源不斷的流量和訂單咨詢。

索引的作用

索引的作用就是加快查詢速度,如果把使用了索引的查詢看做是法拉利跑車的話,那么沒有用索引的查詢就相當于是自行車。目前實際項目中表的數(shù)據(jù)量越來越大,動輒上百萬上千萬級別,沒有索引的查詢會變得非常緩慢,使用索引成為了查詢優(yōu)化的必選項目。

索引的概念

索引其實是一種特殊的數(shù)據(jù),也保存在數(shù)據(jù)庫文件中,索引數(shù)據(jù)保存著數(shù)據(jù)表中實際數(shù)據(jù)的位置。類似書籍前面的目錄,這個目錄就保存了書中各個章節(jié)的頁數(shù),通過查看目錄我們可以快速定位章節(jié)的頁數(shù),從而加快查找速度。

我們來看一段查詢語句:

select * from book where id = 1000000;

假設(shè)書籍表中有幾百萬行數(shù)據(jù),沒索引的查詢會遍歷前面的100萬行數(shù)據(jù)找到結(jié)果,如果我們在id上建立主鍵索引,則直接在索引上定位結(jié)果,速度要快得多。

索引的優(yōu)缺點

優(yōu)點:提高查詢速度

缺點:本身也是數(shù)據(jù),會占用磁盤空間;索引的創(chuàng)建和維護也需要時間成本;進行刪除、更新和插入操作時,因為要維護索引,所以速度會降低。

使用索引的語法

創(chuàng)建索引

建表的同時創(chuàng)建索引

create table 表名

(

字段名 類型,

...

字段名 類型,

index 索引名稱 (字段名)

);

建表后添加索引

alter table 表名 add index 索引名(字段名);

create index 索引名 on 表名(字段名);

刪除索引

alter table 表名 drop index 索引名;

drop index 索引名 on 表名;

查看表中的索引

show index from 表名;

查看查詢語句使用的索引

explain 查詢語句;

索引的分類

索引按功能分為:

普通索引,在普通字段上建立的索引,沒有任何限制

主鍵索引,創(chuàng)建主鍵時,自動創(chuàng)建的索引,不能為空,不能重復

唯一索引,建立索引的字段數(shù)據(jù)必須是唯一的,允許空值

全文索引,在大文本類型(Text)字段上建立的索引

組合索引,組合多個列創(chuàng)建的索引,多個列不能有空值

代碼示例:

-- 創(chuàng)建書籍表

create table tb_book

(

-- 創(chuàng)建主鍵索引

id int primary key,

-- 創(chuàng)建唯一索引

title varchar(100) unique,

author varchar(20),

content Text,

time datetime,

-- 普通索引

index ix_title (title),

-- 全文索引

fulltext index ix_content(content),

-- 組合索引

index ix_title_author(title,author)

);

-- 建表后添加主鍵索引

ALTER TABLE tb_book ADD PRIMARY KEY pk_id(id);

-- 建表后添加唯一索引

ALTER TABLE tb_book ADD UNIQUE index ix_title(title);

-- 建表后添加全文索引

ALTER TABLE tb_book ADD FULLTEXT index ix_content(content);

-- 查詢時使用全文索引

SELECT * FROM tb_book MATCH(content) ANGAINST(‘勝利’);

-- 建表后添加組合索引

ALTER TABLE tb_book ADD INDEX ix_book(title,author);

注意:創(chuàng)建組合索引時,要遵循”最左前綴”原則,把最常查詢、排序的字段放左邊,按重要性依次遞減。

索引的使用策略

什么情況下要建立索引?

1)在經(jīng)常需要查詢和排序的字段上建立索引

2)數(shù)據(jù)特別多

什么情況下不要建立索引?

1)字段數(shù)據(jù)存在大量的重復,如:性別

2)數(shù)據(jù)很少

3)經(jīng)常需要增刪改的字段

什么情況下索引會失效?

1)模糊查詢時,使用like ‘%張%’會失效,而like ‘張%’不會

2)使用is null或is not null查詢時

3)使用組合索引時,某個字段為null

4)使用or查詢多個條件時

5)在函數(shù)中使用字段時,如where year(time) = 2019

索引的結(jié)構(gòu)

不同的存儲引擎使用不同結(jié)構(gòu)的索引:

聚簇索引,InnoDB支持,索引的順序和數(shù)據(jù)的物理順序一致,類似新華字典中的拼音目錄排列和漢字排列順序一致,聚簇索引一個表中只能有一個。

非聚簇索引,MyISAM支持,索引順序和數(shù)據(jù)的物理順序不一致,類似新華字典中的偏旁部首目錄和漢字排列順序不一致,非聚簇索引表可以有多個。

SQL索引怎么創(chuàng)建使用

索引的數(shù)據(jù)結(jié)構(gòu)主要是:BTree和B+Tree

BTree的數(shù)據(jù)結(jié)構(gòu)如下,是一種平衡搜索多叉樹,每個節(jié)點由key和data組成,key是索引的鍵,data是鍵對應(yīng)的數(shù)據(jù),在節(jié)點的兩邊是兩個指針,指向另外的索引位置,而所有的鍵都是排序過的,這樣在搜索索引時,可以使用二分查找,速度比較快,時間復雜度是h*log(n),h是樹的高度,BTree是一種比較高效的搜索結(jié)構(gòu)。

SQL索引怎么創(chuàng)建使用

B+Tree的數(shù)據(jù)結(jié)構(gòu)如下,是BTree的升級版,區(qū)別是非葉子節(jié)點不在存儲具體的數(shù)據(jù),只保存索引的鍵,數(shù)據(jù)保存到葉子節(jié)點中,并且葉子節(jié)點中沒有指針只有鍵和數(shù)據(jù)。B+Tree的優(yōu)點是:搜索效率更高,因為非葉子節(jié)點中沒有保存數(shù)據(jù),就可以保存更多的鍵,每一層的鍵越多,樹的高度就會減少,這樣查詢速度就會提升。

SQL索引怎么創(chuàng)建使用

感謝各位的閱讀,以上就是“SQL索引怎么創(chuàng)建使用”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對SQL索引怎么創(chuàng)建使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

當前標題:SQL索引怎么創(chuàng)建使用
轉(zhuǎn)載來源:http://m.kartarina.com/article8/jedcop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google網(wǎng)站改版定制開發(fā)ChatGPT品牌網(wǎng)站建設(shè)網(wǎng)站導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
主站蜘蛛池模板: 久久亚洲精品无码gv| 国产成人AV无码精品| 久久AV高潮AV无码AV| 亚洲最大无码中文字幕| 无码人妻一区二区三区兔费| 亚洲a无码综合a国产av中文| 中日精品无码一本二本三本| 少妇人妻偷人精品无码视频 | 东京热av人妻无码专区| 国产日韩AV免费无码一区二区三区| 亚洲国产精品无码久久久不卡| 亚洲youwu永久无码精品| 一级毛片中出无码| 麻豆aⅴ精品无码一区二区| 无码人妻H动漫中文字幕| 日日麻批免费40分钟无码| 不卡无码人妻一区三区音频| 亚洲AV无码一区二区三区久久精品| 国产丝袜无码一区二区三区视频| 无码射肉在线播放视频| 高清无码视频直接看| 大桥久未无码吹潮在线观看 | 亚洲乱亚洲乱妇无码| 国产精品99精品无码视亚| 无码aⅴ精品一区二区三区| 91精品无码久久久久久五月天| 亚洲精品无码久久久久去q| 天码av无码一区二区三区四区| 亚洲欧洲无码一区二区三区| 日韩精品无码中文字幕一区二区 | 精品国产V无码大片在线看| 国内精品人妻无码久久久影院| 无码欧精品亚洲日韩一区夜夜嗨| 伊人久久大香线蕉无码| 无码播放一区二区三区| 久久久久亚洲av无码专区| 无码aⅴ精品一区二区三区浪潮| 97无码人妻福利免费公开在线视频| 波多野结AV衣东京热无码专区| 影院无码人妻精品一区二区| 无码专区国产无套粉嫩白浆内射|