mysql数据库索引(查看、创建、删除)命令

mysql数据库索引(查看、创建、删除)命令

一、查看索引
SHOW INDEX FROM table_name

二、索引的创建
1.PRIMARY KEY(主键索引)
mysql>ALTER TABLE table_name ADD PRIMARY KEY ( column )
2.UNIQUE(唯一索引)
mysql>ALTER TABLE table_name ADD UNIQUE (column )
3.INDEX(普通索引)
mysql>ALTER TABLE table_name ADD INDEX index_name ( column )
4.FULLTEXT(全文索引)
mysql>ALTER TABLE table_name ADD FULLTEXT ( column )
5.多列索引
mysql>ALTER TABLE table_name ADD INDEX index_name ( column1, column2, column3 )

三、删除索引
1.使用 ALTER TABLE 语句删除索引
ALTER TABLE table_name DROP INDEX index_name;
2.使用 DROP INDEX 语句删除索引
DROP INDEX index_name ON table_name;

四、索引失效的几种情况
1.有or必全有索引;
2.复合索引未用左列字段;
3.like以%开头;
4.需要类型转换;
5.where中索引列有运算;
6.where中索引列使用了函数;
7.如果mysql觉得全表扫描更快时(数据少);

五、索引在以下情况建议不要用
1、数据唯一性差(一个字段的取值只有几种时)的字段不要使用索引
比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描。

2、 频繁更新的字段不要使用索引
比如logincount登录次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。

3、字段不在where语句出现时不要添加索引,如果where后含IS NULL /IS NOT NULL/ like ‘%输入符%’等条件,不建议使用索引。
只有在where语句出现,mysql才会去使用索引

4、where 子句里对索引列使用不等于(<>),使用索引效果一般

六、索引创建遵循的原则
1、选择唯一性索引
2、为经常需要排序、分组和联合操作的字段建立索引
3.为常作为查询条件的字段建立索引
4、限制索引的数目
5、尽量使用索引值少的索引
6、尽量使用前缀来索引
7、删除不要使用或很少使用的索引
8、最左前缀匹配原则
mysql会一直向右匹配直到遇到范围查询(>、 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
9、=和in可以乱序
10、尽量使用区分度高的列作为索引
11、索引列不能参与计算,保持列“干净”
12.尽量的扩展索引,不要新建索引。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值