数据库索引失效情况

索引失效
1.创建了单字段索引,where条件内多个字段
ALTER TABLE `test` 
ADD INDEX `test_index`(`name`) USING BTREE;
select * from test where name = 'test' and sex = 0
2.创建联合索引,where条件单个字段
ALTER TABLE `test` 
ADD INDEX `test_index`(`name`,`sex`) USING BTREE;
select * from test where name = 'test';
3.对索引使用内部函数
ALTER TABLE `test` 
ADD INDEX `test_index`(`name`) USING BTREE;
select * from test where round(`name`) = 'test'
4.使用is null ,is not null
select * from test where name is null;
select * from test where name is not null;
5.类型错误,如字段类型为varchar,where条件用number
错误:select * from test where name = 1;
正确:select * from test where name = '1';
6.对索引列运算,运算包括(+、-、*、/、!、<>、%、like’%_’(%放在前面)、or、in、exist等)
select * from test where name like '%你好';  -- 不生效;
select * from test where name like '你好%';   -- 生效
7.复合索引(复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用)
ALTER TABLE `test` 
ADD INDEX `test_index`(`name`,`sex`,`address`) USING BTREE;
select * from test where sex = '1' and address = 'test' ; -- 不生效
select * from test where address = 'test' -- 不生效
select * from test where name = 'test' and sex = '1' and address = 'test'; -- 生效  ()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值