CREATE
創(chuàng)新互聯(lián)長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為軹城企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),軹城網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
[UNIQUE]
INDEX
ON
(字段
[ASC|DESC]);
UNIQUE
--確保所有的索引列中的值都是可以區(qū)分的。
[ASC|DESC]
--在列上按指定排序創(chuàng)建索引。
(創(chuàng)建索引的準(zhǔn)則:
1.如果表里有幾百行記錄則可以對(duì)其創(chuàng)建索引(表里的記錄行數(shù)越多索引的效果就越明顯)。
2.不要試圖對(duì)表創(chuàng)建兩個(gè)或三個(gè)以上的索引。
3.為頻繁使用的行創(chuàng)建索引。
)
示例
create
index
i_1
on
emp(empno
asc);
CREATE INDEX indexName ON mytable(username(length));
如果是CHAR,VARCHAR類型,length可以小于字段實(shí)際長(zhǎng)度;如果是BLOB和TEXT類型,必須指定 length,下同。
使用下面SQL命令show create就可以,例如下面的命令顯示數(shù)據(jù)庫(kù)web里面表clubuser的你需要的信息:
show create table web.clubuser;
索引用于快速找到特定一些值的記錄。如果沒有索引,MySQL就必須從第一行記錄開始讀取整個(gè)表來(lái)檢索記錄。表越大,資源消耗越大。如果在字段上有索引的話,MySQL就能很快決定該從數(shù)據(jù)文件的哪個(gè)位置開始搜索記錄,而無(wú)須查找所有的數(shù)據(jù)。如果表中有1000條記錄的話,那么這至少比順序地讀取數(shù)據(jù)快100倍。注意,如果需要存取幾乎全部1000條記錄的話,那么順序讀取就更快了,因?yàn)檫@樣會(huì)使磁盤搜索最少。
大部分MySQL索引(PRIMARY KEY, UNIQUE,INDEX 和 FULLTEXT)都是以B樹方式存儲(chǔ)。只有空間類型的字段使用R樹存儲(chǔ),MEMORY (HEAP)表支持哈希索引。
字符串默認(rèn)都是自動(dòng)壓縮前綴和后綴中的空格。
通常,如下所述幾種情況下可以使用索引。哈希索引(用于 MEMORY 表)的獨(dú)特之處在后面會(huì)討論到。
想要盡快找到匹配 WHERE 子句的記錄。
根據(jù)條件排除記錄。如果有多個(gè)索引可共選擇的話,MySQL通常選擇能找到最少記錄的那個(gè)索引。
做表連接查詢時(shí)從其他表中檢索記錄。
想要在指定的索引字段 key_col 上找到它的 MIN() 或 MAX() 值。優(yōu)化程序會(huì)在檢查索引的
key_col 字段前就先檢查其他索引部分是否使用了 WHERE key_part_# = constant 子句。這樣的話,
MySQL會(huì)為 MIN() 或 MAX() 表達(dá)式分別單獨(dú)做一次索引查找,并且將它替換成常數(shù)。當(dāng)所有的表達(dá)式都被替換成常數(shù)后,查詢就立刻返回。如下:
SELECT MIN(key_part2),MAX(key_part2) FROM tbl_name WHERE key_part1=10;
對(duì)表作排序或分組,當(dāng)在一個(gè)可用的最左前綴索引上做分組或排序時(shí)(如 ORDER
BY key_part1, key_part2)。如果所有的索引部分都按照 DESC 排序,索引就按倒序排序。
有些時(shí)候,查詢可以優(yōu)化使得無(wú)需計(jì)算數(shù)據(jù)就能直接取得結(jié)果。當(dāng)查詢使用表中的一個(gè)數(shù)字型字段,且這個(gè)字段是索引的最左部分,則可能從索引樹中能很快就取得結(jié)果:
SELECTkey_part3FROMtbl_nameWHEREkey_part1=1
假設(shè)有如下 SELECT 語(yǔ)句:
如果在 col1 和 col2 上有一個(gè)多字段索引的話,就能直接取得對(duì)應(yīng)的記錄了。
索引的創(chuàng)建很簡(jiǎn)單,可以網(wǎng)上查下相關(guān)信息,在這里只是說(shuō)下索引需要注意的地方,索引分為很多不同的類型,一般咱們說(shuō)的是B_Tree索引,這里就只說(shuō)B_Tree,如果是哈希索引,可以網(wǎng)上找相關(guān)資料。
.B_Tree適用于:
1.全值匹配
全值匹配是指和索引中的所有列進(jìn)行匹配。
2.匹配最左前綴
匹配左左前綴即只使用索引的第一列
3.匹配列前綴
匹配某一列開頭部分(指的第一列)。
4.匹配范圍值
5.精確匹配某一列并范圍匹配另一列
6.只訪問(wèn)索引的查詢
只需訪問(wèn)索引,無(wú)需訪問(wèn)數(shù)據(jù)行。
.B_Tree限制
1.如果不是按照索引的最左列開始查找,則無(wú)法使用索引。
2.不能跳過(guò)索引中的列。
3.如果查詢中有某個(gè)列的范圍查詢,則其右邊左右列無(wú)法使用索引優(yōu)化查找。