美文网首页
Mysql使用强制索引

Mysql使用强制索引

作者: 人在码途 | 来源:发表于2017-10-23 22:57 被阅读139次

问题

生成环境,同一条sql在不同的从库执行,产生的执行计划不同,一个使用了索引,一个未使用索引

explain SELECT * FROM `database`.`table` FORCE INDEX(create_time) WHERE create_time >= 1508360400 and create_time <= 1508444806 ORDER BY create_time asc LIMIT 4000, 1000;

原因分析

  1. 分析是否是取值limit太大,超过count的1/3,Innodb引擎不使用索引。经分析共计有6000多条数据,索引这个原因可以排除
  2. 相同的sql在不同的从库执行,一个未使用索引,分析是索引文件或者表的碎片导致,后咨询阿里DBA给分析是表的碎片问题导致产生的执行计划不正常

解决方案

  1. 方案1:执行OPTIMIZE TABLE修复碎片或者执行ALTER TABLE foo ENGINE=InnoDB,以上两种操作都会锁表,对于数据量大,且业务高峰期执行需要慎重

  2. 方案2:强制索引,也就是FORCE index create_time,强制mysql 引擎使用索引,这里需要注意一下,当使用强制索引时,存储引擎会检查强制索引是否可用,如果不可用,还需要扫描表来判断那种执行计划,官方说明:

    The FORCE INDEX hint acts like USE INDEX (index_list), with the addition that a table scan is assumed to be very expensive. In other words, a table scan is used only if there is no way to use one of the named indexes to find rows in the table.
    

    也不用担心有副作用,如果强制索引可用,正好能提要索引选择的效率

参考链接:

http://blog.csdn.net/u011575570/article/details/48092403

https://dev.mysql.com/doc/refman/5.7/en/index-hints.html

相关文章

  • mysql查询时强制或者禁止使用某个索引

    mysql强制索引和禁止某个索引 1、mysql强制使用索引:force index(索引名或者主键PRI)例如:...

  • mysql hint优化器提示之使用force index 强制

    mysql强制使用索引 1、mysql强制使用主键索引 2、强制指定一个特定索引 3、同时指定两个 4、在多个表j...

  • Mysql使用强制索引

    问题 生成环境,同一条sql在不同的从库执行,产生的执行计划不同,一个使用了索引,一个未使用索引 原因分析 分析是...

  • laravel eloquent 强制mysql使用索引

    为什么需要强制索引? `数据库没有使用我们设想的索引进行sql查询,导致查询特别慢。` mysql强制索引查询语句...

  • MySQL FORCE INDEX 强制索引使用

    强制索引,即指定本次查询使用某个特定的索引,这样就可避免MySQL优化器使用低效的索引。 应用场景 当前需要统计当...

  • SQLAlchemy中指定想要使用的索引

    我们知道在MySQL中可以使用FORCE INDEX(index_name,...)来强制使用索引,那在SQLAl...

  • MYSQL函数强制使用/禁止使用索引

    一、强制索引的使用 在公司开发的一个模块中有大数据量的查询,由于数据量所以根据具体筛选条件创建了多个索引。 一般情...

  • 数据库

    • MySQL 索引使用的注意事项 MySQL 索引使用的注意事项 索引不会包含有NULL值的列使用短索引...

  • 索引(二)

    mysql索引的新手入门详解mysql索引之三:索引使用注意规则 索引(Index)是帮助 MySQL 高效获取数...

  • Mysql 索引优化

    联合索引和单个索引选择 对比,值越大越好 强制使用某个索引 使用explain分析索引 1、id:SQL执行的顺序...

网友评论

      本文标题:Mysql使用强制索引

      本文链接:https://www.haomeiwen.com/subject/brnjqxtx.html