本篇文章小编给大家分享一下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;
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔