索引的作用相當(dāng)于圖書(shū)的目錄,可以根據(jù)目錄中的頁(yè)碼快速找到所需的內(nèi)容。下面我們來(lái)看看MySQL目前主要有的索引類(lèi)型:普通索引普通索引是最基本的索引,它沒(méi)有任何限制,值可以為空;僅加速查詢(xún)。
創(chuàng)新互聯(lián)專(zhuān)注于井研網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供井研營(yíng)銷(xiāo)型網(wǎng)站建設(shè),井研網(wǎng)站制作、井研網(wǎng)頁(yè)設(shè)計(jì)、井研網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造井研網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供井研網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
索引用來(lái)快速地尋找那些具有特定值的記錄,所有MySQL索引都以B-樹(shù)的形式保存。如果沒(méi)有索引,執(zhí)行查詢(xún)時(shí)MySQL必須從第一個(gè)記錄開(kāi)始掃描整個(gè)表的所有記錄,直至找到符合要求的記錄。表里面的記錄數(shù)量越多,這個(gè)操作的代價(jià)就越高。
BTREEBTREE索引就是一種將索引值按一定的算法,存入一個(gè)樹(shù)形的數(shù)據(jù)結(jié)構(gòu)中(二叉樹(shù)),每次查詢(xún)都是從樹(shù)的入口root開(kāi)始,依次遍歷node,獲取leaf。這是MySQL里默認(rèn)和最常用的索引類(lèi)型。
如果我們創(chuàng)建了name列的索引,MySQL將在索引中排序name列,對(duì)于索引中的每一項(xiàng),MySQL在內(nèi)部為它保存一個(gè)數(shù)據(jù)文件中實(shí)際記錄所在位置的“指針”。
簡(jiǎn)單來(lái)說(shuō),數(shù)據(jù)庫(kù)索引就是數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)!進(jìn)一步說(shuō)則是該數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)了一張表中某一列的所有值,也就是說(shuō)索引是基于數(shù)據(jù)表中的某一列創(chuàng)建的。
在數(shù)據(jù)庫(kù)表中,使用索引可以大大提高查詢(xún)速度。
是的。因?yàn)樵谝酝ㄅ浞?% 和 _ 開(kāi)頭作查詢(xún)時(shí),MySQL 不會(huì)使用索引,如 SELECT * FROM myIndex WHERE vc_Name likeerquan%會(huì)使用索引,而 SELECT * FROM myIndex WHEREt vc_Namelike%erquan 就不會(huì)使用索引了。
MySQL會(huì)在以下操作時(shí)使用索引:快速查找匹配where語(yǔ)句的行記錄時(shí)。預(yù)計(jì)能夠縮小結(jié)果的范圍時(shí)。如果查詢(xún)能夠匹配多個(gè)索引,MySQL一般會(huì)使用能夠過(guò)濾出結(jié)果最少的索引。join操作時(shí)從其他表?yè)茢?shù)據(jù)。
MySQL索引的類(lèi)型 普通索引這是最基本的索引,它沒(méi)有任何限制,比如上文中為title字段創(chuàng)建的索引就是一個(gè)普通索引,MyIASM中默認(rèn)的BTREE類(lèi)型的索引,也是我們大多數(shù)情況下用到的索引。
abc) (ab) (ac)(bc)(a) (b) (c)復(fù)合索引又叫聯(lián)合索引。
例如,如果有一個(gè)CHAR(255)的列,如果在前10個(gè)或20個(gè)字符內(nèi),多數(shù)值是惟一的,那么就不要對(duì)整個(gè)列進(jìn)行索引。短索引不僅可以提高查詢(xún)速度而且可以節(jié)省磁盤(pán)空間和I/O操作。
全部都是全表掃描,根據(jù)MySQL聯(lián)表查詢(xún)的算法 Nested-Loop Join ,MySQL查詢(xún)的結(jié)果集是3張表的笛卡爾積,所以效率特別低。耗時(shí)變成 20毫秒 給Where條件建立索引,并不一定會(huì)使用。
可以把索引比作新華字典的音序表。例如,要查“庫(kù)”字,如果不使用音序,就需要從字典的 400 頁(yè)中逐頁(yè)來(lái)找。但是,如果提取拼音出來(lái),構(gòu)成音序表,就只需要從 10 多頁(yè)的音序表中直接查找。這樣就可以大大節(jié)省時(shí)間。
一般情況下某個(gè)前綴的選擇性也是足夠高的,足以滿(mǎn)足查詢(xún)性能。對(duì)于BLOB,TEXT,或者很長(zhǎng)的VARCHAR類(lèi)型的列,必須使用前綴索引,因?yàn)镸ySQL不允許索引這些列的完整長(zhǎng)度。
要想高效利用索引,我們首先要考慮如何正確建立索引。(1)在經(jīng)常做搜索的列上,也就是WHERE子句里經(jīng)常出現(xiàn)的列,考慮加上索引,加快搜索速度。
MySQL索引類(lèi)型包括:(1)普通索引 這是最基本的索引,它沒(méi)有任何限制。
使用聯(lián)合索引盡量覆蓋多的條件 這是說(shuō)在一個(gè)慢sql里假如有五個(gè)where ,一個(gè) order by ,那么我們的聯(lián)合索引盡量覆蓋到這五個(gè)查詢(xún)條件,如果有必要,order by 也覆蓋上 。
名稱(chēng)欄目:mysql怎么使用索引 mysql怎么索引優(yōu)化查詢(xún)
文章鏈接:http://m.newbst.com/article30/dgogpso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、動(dòng)態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、網(wǎng)站維護(hù)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)