您好,登錄后才能下訂單哦!
mysql中索引的優劣勢有哪些?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
優點:可以快速的檢索 、可以加快分組和排序
缺點: 占用儲存空間、降低數據表的修改操作
主鍵索引 | 即主索引,根據主鍵 pk_clolum(length)建立索引,不允許重復,不允許空值 |
---|---|
唯一索引 | 用來建立索引的列的值必須是唯一的,允許空值 |
普通索引 | 用表中的普通列構建的索引,沒有任何限制 |
全文索引 | 用大文本對象的列構建的索引 |
全文索引 | 用大文本對象的列構建的索引; |
組合索引 | 用多個列組合構建的索引,這多個列中的值不允許有空值。 |
1、適合建立索引的情況
主鍵自動建立唯一索引;
經常作為查詢條件在 WHERE 或者 ORDER BY 語句中出現的列要建立索引;
作為排序的列要建立索引;
查詢中與其他表關聯的字段,外鍵關系建立索引;
高并發條件下傾向組合索引;
用于聚合函數的列可以建立索引,例如使用了 max(column_1)或者count(column_1)時的 column_1 就需要建立索引。
2、不適合建立索引的情況
經常增刪改的列不要建立索引;
有大量重復的列不建立索引;
表記錄太少不要建立索引。
3、索引失靈的情況
在組合索引中不能有列的值為 NULL,如果有,那么這一列對組合索引就是無效的;
LIKE 操作中,'%aaa%'不會使用索引,也就是索引會失效,但是‘aaa%'可以使用索引;
在索引的列上使用表達式或者函數會使索引失效;
在查詢條件中使用不等于,包括<符號、>符號和!=會導致索引失效;
在查詢條件中使用 IS NULL 或者 IS NOT NULL 會導致索引失效;
字符串不加單引號會導致索引失效;
在查詢條件中使用 OR 連接多個條件會導致索引失效,除非 OR 鏈接的每個條件都加上索引;
如果排序的字段使用了索引,那么 select 的字段也要是索引字段,否則索引失效;
盡量不要包括多列排序,如果一定要,最好為這隊列構建組合索引。
1、創建表的時候添加索引
-- 創建表的時候添加索引 -- INDEX 關鍵詞 -- myindex 索引的名稱自己起的 -- (username(16))添加到哪一個字段上 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX myindex (username(16)) );
2、創建表過后添加索引
-- 添加索引 -- myindex索引的名字(自己定義) -- mytable 表的名字 CREATE INDEX myindex ON mytable(username(16)); 或者 ALTER TABLE mytable ADD INDEX myindex(username);
3 查看索引
-- mytable 表的名字 show index FROM mytable;
4、刪除索引
-- myindex索引的名字(自己定義) -- mytable 表的名字 DROP INDEX myindex ON mytable; 或者 ALTER TABLE mytable DROP INDEX myindex;
關于mysql中索引的優劣勢有哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。