mysql索引红黑联盟_MySQL索引
MySQL索引的建立對(duì)于MySQL的高效運(yùn)行是很重要的,索引可以大大提高M(jìn)ySQL的檢索速度。
可以把索引看作是漢語字典的目錄頁,我們可以按拼音、筆畫、偏旁部首等排序的目錄(索引)快速查找到需要的字。
索引分單列索引和組合索引。單列索引,即一個(gè)索引只包含單個(gè)列,一個(gè)表可以有多個(gè)單列索引,但這不是組合索引。組合索引,即一個(gè)索引包含多個(gè)列。
創(chuàng)建索引時(shí),你需要確保該索引是應(yīng)用在 SQL 查詢語句的條件(一般作為 WHERE 子句的條件)。
實(shí)際上,索引也是一張表,該表保存了主鍵與索引字段,并指向?qū)嶓w表的記錄。
上面都在說使用索引的好處,但過多的使用索引將會(huì)造成濫用。因此索引也會(huì)有它的缺點(diǎn):雖然索引大大提高了查詢速度,同時(shí)卻會(huì)降低更新表的速度,如對(duì)表進(jìn)行INSERT、UPDATE和DELETE。因?yàn)楦卤頃r(shí),MySQL不僅要保存數(shù)據(jù),還要保存一下索引文件。
建立索引會(huì)占用磁盤空間的索引文件。
索引注意事項(xiàng)
1.經(jīng)常出現(xiàn)在where條件中的字段添加索引;
2.數(shù)據(jù)量少的表不需要加索引;
3.如果where條件中是OR的關(guān)系,聯(lián)合索引不起作用;
4.聯(lián)合索引符合最左原則
聯(lián)合索引又稱復(fù)合索引,對(duì)于聯(lián)合索引,mysql從左到右使用索引中的字段,一個(gè)查詢可以使用索引的一部分,但是必須滿足左側(cè)部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3種組合進(jìn)行查找,但不支持 b,c進(jìn)行查找 .當(dāng)最左側(cè)字段是常量引用時(shí),索引就十分有效。
普通索引
創(chuàng)建索引
這是最基本的索引,它沒有任何限制。它有以下幾種創(chuàng)建方式:
CREATE INDEX index_name ON table_name (column_name(length));
如果是CHAR,VARCHAR類型,length可以小于字段實(shí)際長度;如果是BLOB和TEXT類型,必須指定 length。
修改表結(jié)構(gòu)(添加索引)
ALTER tabletable_name ADD INDEX index_name(column_name);
創(chuàng)建表的時(shí)候直接指定
CREATE TABLEtable_name(
IDINT NOT NULL,
usernameVARCHAR(16) NOT NULL,INDEXindex_name (username(length))
);
刪除索引的語法
DROP INDEX index_name ON table_name;
唯一索引
它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種創(chuàng)建方式:
創(chuàng)建索引
CREATE UNIQUE INDEX index_name ON table_name(column_name(length));
修改表結(jié)構(gòu)
ALTER table table_name ADD UNIQUE index_name (column_name(length));
創(chuàng)建表的時(shí)候直接指定
CREATE TABLEtable_name(
IDINT NOT NULL,
usernameVARCHAR(16) NOT NULL,UNIQUE index_name(username(length))
);
查詢索引信息
可以使用 SHOW INDEX 命令來列出表中的相關(guān)的索引信息。
SHOW INDEX FROM table_name;
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的mysql索引红黑联盟_MySQL索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 菲律宾离中国多远
- 下一篇: 中国特种部队常用的几款枪械