原创智能优化,原创度检查,一键采集,文章组合(【持续原创输出】命中索引优化规则(一)(组图))

优采云 发布时间: 2022-04-20 02:22

  原创智能优化,原创度检查,一键采集,文章组合(【持续原创输出】命中索引优化规则(一)(组图))

  继续原创输出,点击上方蓝字关注我

  

  前言索引优化规则1、like语句的前导模糊查询不能使用索引

  select * from doc where title like '%XX';   --不能使用索引

select * from doc where title like 'XX%';   --非前导模糊查询,可以使用索引

  2、union,in,或者都可以命中索引,推荐使用in

  Union 可以命中索引,MySQL 消耗的 CPU 最少。

  select * from doc where status=1

union all

select * from doc where status=2;

  in 可以命中索引,查询优化比 union all 消耗 CPU 多,但可以忽略。一般情况下,建议使用in。

  select * from doc where status in (1, 2);

  或者新版本的MySQL可以命中索引,查询优化比in更消耗CPU。不建议频繁使用or。

  select * from doc where status = 1 or status = 2

  补充:有些地方说在where条件下使用or会使索引失效,导致全表扫描。这是一个误解:

  3、否定条件查询不能使用索引

  select * from doc where status != 1 and status != 2;

  select * from doc where status in (0,3,4);

  4、联合索引的最左前缀原则

  select uid, login_time from user where login_name=? andpasswd=?

  创建联合索引时,最有区别的字段在最左边

  当有不等号和等号的混合判断条件时,创建索引时,等号条件的列是前置的。例如,哪里a>?和b=?,那么即使a更具辨别力,b也必须放在索引的顶部。

  用最左前缀查询时,并不代表SQL语句的where顺序要与联合索引一致。

  select uid, login_time from user where passwd=? andlogin_name=?

  如果index(a,b,c), where a=3 and b like 'abc%' and c=4, a可以用,b可以用,c不能用。

  5、索引中范围条件右边的列不能使用(范围列可以用于索引),范围列后面的列的索引无效。

<p>select * from employees.titles where emp_no 

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线