A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、慎用like语句
(1)、where name like '%Jack' 索引失效
(2)、where name like 'Jack%' 索引生效
(3)、where name like '%Jack%' 索引失效
如果like 后面%在语句前面会导致索引失效
2、复合索引(纠错)
网上大部分论坛中的博客都是错误的。
user表中有如下字段,username,password,schoolname,给user表建立复合索引
create index index_name on user(username,password,schoolname);
查询语句:
select * from user where username='zs' and password='zs' and schoolname='yet' 索引生效
select * from user where username='zs' and password='zs' 索引生效
select * from user where username='zs' and schoolname='yet' username索引生效,schoolname索引
不生效
select * from user where password='zs' and schoolname='yet' 索引不生效
select * from user where password='zs' and username='zs' and schoolname='yet' 索引生效****
select * from user where schoolname='yet' and username='zs' and password='zs' 索引生效****
3、or慎用
or两侧的语句,如果有一侧没有索引,那么整个语句不走索引,但是如果两侧都有索引,这时候是走索引的。
4、is null ,is not null
目前版本已经可以走索引了,面试题答案有问题了
5、in
目前版本已经可以走索引了,面试题答案有问题了,不在需要使用between和exsit替换了
not in 不走索引
6、where子句中应尽量避免对索引字段操作(表达式操作或函数操作),比如select id from test where num/2 =
100应改为num = 200。
7、在使用复合索引时,查询时必须使用到索引的第一个字段,否则索引失效;并且应尽量让字段顺序与索引顺序一致。
8、查询时必须使用正确的数据类型。数据库包含了自动了类型转换,比如纯数字赋值给字符串字段时可以被自动转换,
但如果查询时不加引号查询,会导致引擎忽略索引


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马