您好,登錄后才能下訂單哦!
這篇文章主要講解了“MySQL中索引的語法以及索引的優缺點”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL中索引的語法以及索引的優缺點”吧!
創建索引
在創建表的時候添加索引
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
在創建表以后添加索引
ALTER TABLE my_table ADD [UNIQUE] INDEX index_name(column_name);或者CREATE INDEX index_name ON my_table(column_name);
注意:
1、索引需要占用磁盤空間,因此在創建索引時要考慮到磁盤空間是否足夠
2、創建索引時需要對表加鎖,因此實際操作中需要在業務空閑期間進行
根據索引查詢
具體查詢:
SELECT * FROM table_name WHERE column_1=column_2;(為column_1建立了索引)
或者模糊查詢
SELECT * FROM table_name WHERE column_1 LIKE '%三'
SELECT * FROM table_name WHERE column_1 LIKE '三%'
SELECT * FROM table_name WHERE column_1 LIKE '%三%'
SELECT * FROM table_name WHERE column_1 LIKE '_好_'
如果要表示在字符串中既有A又有B,那么查詢語句為:
SELECT * FROM table_name WHERE column_1 LIKE '%A%' AND column_1 LIKE '%B%';
SELECT * FROM table_name WHERE column_1 LIKE '[張李王]三'; //表示column_1中有匹配張三、李三、王三的都可以
SELECT * FROM table_name WHERE column_1 LIKE '[^張李王]三'; //表示column_1中有匹配除了張三、李三、王三的其他三都可以
//在模糊查詢中,%表示任意0個或多個字符;_表示任意單個字符(有且僅有),通常用來限制字符串長度;[]表示其中的某一個字符;[^]表示除了其中的字符的所有字符
或者在全文索引中模糊查詢
SELECT * FROM table_name WHERE MATCH(content) AGAINST('word1','word2',...);
刪除索引
DROP INDEX my_index ON tablename;或者ALTER TABLE table_name DROP INDEX index_name;
查看表中的索引
SHOW INDEX FROM tablename
查看查詢語句使用索引的情況
//explain 加查詢語句explain SELECT * FROM table_name WHERE column_1='123';
優勢:可以快速檢索,減少I/O次數,加快檢索速度;根據索引分組和排序,可以加快分組和排序;
劣勢:索引本身也是表,因此會占用存儲空間,一般來說,索引表占用的空間的數據表的1.5倍;索引表的維護和創建需要時間成本,這個成本隨著數據量增大而增大;構建索引會降低數據表的修改操作(刪除,添加,修改)的效率,因為在修改數據表的同時還需要修改索引表;
常見的索引類型有:主鍵索引、唯一索引、普通索引、全文索引、組合索引
1、主鍵索引:即主索引,根據主鍵pk_clolum(length)建立索引,不允許重復,不允許空值;
ALTER TABLE 'table_name' ADD PRIMARY KEY pk_index('col');
2、唯一索引:用來建立索引的列的值必須是唯一的,允許空值
ALTER TABLE 'table_name' ADD UNIQUE index_name('col');
3、普通索引:用表中的普通列構建的索引,沒有任何限制
ALTER TABLE 'table_name' ADD INDEX index_name('col');
4、全文索引:用大文本對象的列構建的索引(下一部分會講解)
ALTER TABLE 'table_name' ADD FULLTEXT INDEX ft_index('col');
5、組合索引:用多個列組合構建的索引,這多個列中的值不允許有空值
ALTER TABLE 'table_name' ADD INDEX index_name('col1','col2','col3');
*遵循“最左前綴”原則,把最常用作為檢索或排序的列放在最左,依次遞減,組合索引相當于建立了col1,col1col2,col1col2col3三個索引,而col2或者col3是不能使用索引的。
*在使用組合索引的時候可能因為列名長度過長而導致索引的key太大,導致效率降低,在允許的情況下,可以只取col1和col2的前幾個字符作為索引
ALTER TABLE 'table_name' ADD INDEX index_name(col1(4),col2(3));
表示使用col1的前4個字符和col2的前3個字符作為索引
感謝各位的閱讀,以上就是“MySQL中索引的語法以及索引的優缺點”的內容了,經過本文的學習后,相信大家對MySQL中索引的語法以及索引的優缺點這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。