本篇文章小编给大家分享一下mysql高级学习之索引的优劣势及规则使用代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
一、索引的优劣势
优点:可以快速的检索 、可以加快分组和排序
缺点: 占用储存空间、降低数据表的修改操作
二、索引的分类
三、使用索引的规则
1、适合建立索引的情况
主键自动建立唯一索引;
经常作为查询条件在 WHERE 或者 ORDER BY 语句中出现的列要建立索引;
作为排序的列要建立索引;
查询中与其他表关联的字段,外键关系建立索引;
高并发条件下倾向组合索引;
用于聚合函数的列可以建立索引,例如使用了 max(column_1)或者count(column_1)时的 column_1 就需要建立索引。
2、不适合建立索引的情况
经常增删改的列不要建立索引;
有大量重复的列不建立索引;
表记录太少不要建立索引。
3、索引失灵的情况
在组合索引中不能有列的值为 NULL,如果有,那么这一列对组合索引就是无效的;
pKE 操作中,'%aaa%'不会使用索引,也就是索引会失效,但是‘aaa%'可以使用索引;
在索引的列上使用表达式或者函数会使索引失效;
在查询条件中使用不等于,包括<符号、>符号和!=会导致索引失效;
在查询条件中使用 IS NULL 或者 IS NOT NULL 会导致索引失效;
字符串不加单引号会导致索引失效;
在查询条件中使用 OR 连接多个条件会导致索引失效,除非 OR 链接的每个条件都加上索引;
如果排序的字段使用了索引,那么 select 的字段也要是索引字段,否则索引失效;
尽量不要包括多列排序,如果一定要,最好为这队列构建组合索引。
四、关于索引的SQL
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;
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整