我试图通过向慢查询日志中出现的查询添加索引来提高锤击的wordpress DB的性能.

在MS SQL中,您可以使用查询提示强制查询使用索引,但如果正确覆盖列,则通常很容易获得查询以使用索引.

我有这个查询出现在慢查询日志中很多

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID

FROM wp_posts

WHERE 1=1

AND wp_posts.post_type = 'post'

AND (wp_posts.post_status = 'publish')

ORDER BY wp_posts.post_date DESC

LIMIT 18310, 5;

我在post_date,post_status,post_type和post_id上创建了覆盖wp_posts的唯一索引,然后重新启动MySQL但是当我运行解释时使用的索引是

status_password_id

并且在可能的键中我的新索引甚至没有出现,尽管它是一个覆盖索引,例如我得到的

type_status_date,status_password_id

因此,如果MySQL有一个“优化器”,那么使用的索引或可能的选择都不会考虑我的post_date作为第一列的索引.我本来以为一个查询基本上是做一个TOP并按日期排序

ORDER BY wp_posts.post_date DESC LIMIT 18310, 5;

是否希望使用按日期排序的索引来获取速度,尤其是具有满足查询所需的所有其他字段的索引?

MySQL是否有查询提示强制索引用于速度/性能测试,或者我还需要做些什么来查看为什么忽略这个索引.

如果Navicat有一个像MS SQL这样的可视化查询执行计划,我会很喜欢它,但似乎EXPLAIN是它提供的最好的.

任何有关如何强制使用索引或解决为什么被忽略的提示的人都会非常有帮助!

谢谢

解决方法:

Does MySQL have query hints to force an index to be used for speed/performance tests or is there something else I need to do to see why this index is being ignored.

By specifying USE INDEX(index_list), you can tell MySQL to use

only one of the named indexes to find rows in the table. The

alternative syntax IGNORE INDEX(index_list) can be used to tell

MySQL to not use some particular index or indexes. These hints are

useful if 07001 shows that MySQL is using the wrong index

from the list of possible indexes.

You can also use FORCE INDEX, which acts like USE INDEX(index_list)

but 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 given indexes to find rows in the table.

Each hint requires the names of indexes, not the names of columns. The

name of a PRIMARY KEY is PRIMARY. To see the index names for a

table, use 07002.

如果USE INDEX不起作用,请尝试使用IGNORE INDEX来查看优化器的第二个选择(或第三个,等等).

一个简单的语法示例是:

SELECT * FROM t1 USE INDEX (i1) IGNORE INDEX (i2) WHERE ...

在链接的文档中,还有更多来自哪里.我已链接到5.0版本的页面,但您可以使用左侧边栏轻松导航到相应的版本;从5.1版开始提供了一些其他语法选项.

标签:wordpress,mysql,indexing,explain

来源: https://codeday.me/bug/20190713/1446636.html

mysql中的强制索引_你如何强制MySQL中的查询使用索引?相关推荐

  1. 面试mysql中怎么创建索引_阿里面试:MySQL如何设计索引更高效?

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  2. mysql 强制使用索引_快速找出MySQL数据库冗余索引和未使用索引

    冗余索引和未使用索引的危害 随着上线的业务越来越多,在MySQL数据库中建的表也会越来越多,为提高查询访问速度,会创建相应的索引.但是由于技术人员的水平参差不齐,业务下线,代码逻辑变更等原因,导致线上 ...

  3. mysql force index报错_新特性解读 | MySQL 8.0 索引特性4-不可见索引

    MySQL 8.0 实现了索引的隐藏属性.当然这个特性很多商业数据库早就有了,比如ORACLE,在11g中就实现了.我来介绍下这个小特性. 介绍 INVISIBLE INDEX,不可见索引或者叫隐藏索 ...

  4. mysql 聚簇索引和非聚簇索引_图文并茂,说说MySQL索引

    点击上方 小伟后端笔记 ,选择 星标 公众号 重磅资讯.干货,第一时间送达 作者:小小木的博客来源:cnblogs.com/wyc1994666/p/10831039.html 序 开门见山,直接上图 ...

  5. python向mysql中添加数据标签_用python在MySQL中写入数据和添加数据

    在笔者之前的博文中,已介绍了用python连接与mysql数据库的知识.包括如何安装python连接mysql的pymysql包,如何通过cusor语句将python与mysql连接起来,以及如何用p ...

  6. mysql检索有什么区别_检索行时,MySQL中AND或OR运算符有什么区别?

    AND,OR之间的区别在于,AND评估两个条件都必须为真,以使整体条件为真.OR求一个条件必须为真,以使整体条件为真. 让我们创建一个表-mysql> create table demo70 − ...

  7. mysql创建存储时覆盖_总结到位的MySQL 的覆盖索引与回表

    两大类索引 使用的存储引擎:MySQL5.7 InnoDB 聚簇索引 * 如果表设置了主键,则主键就是聚簇索引 * 如果表没有主键,则会默认第一个NOT NULL,且唯一(UNIQUE)的列作为聚簇索 ...

  8. mysql 8函数索引_新特性解读 | MySQL 8.0 索引特性1-函数索引

    原创作者:杨涛涛 函数索引顾名思义就是加给字段加了函数的索引,这里的函数也可以是表达式.所以也叫表达式索引. MySQL 5.7 推出了虚拟列的功能,MySQL8.0的函数索引内部其实也是依据虚拟列来 ...

  9. dataframe 如何增加新的索引_带你领略pandas中多表之间如何处理

    但我们在处理Pandas多表数据时,我们需要将多个表之间进行表格的连接与合并,当连接完多表之后我们可能还需要对数据进行多重的索引,方便我们更快的找到数据,以及对数据进行做透视表,更加直观的去观察我们的 ...

最新文章

  1. 【备忘1】防止表格/层 被撑破的CSS控制代码
  2. C# 中的var关键字
  3. “在解决方案中的一个或多个项目由于以下原因未能加载 项目文件或网站已移动或重新命名,或者不在您的计算机上” 的解决办法...
  4. 统计分组的原则是要体现什么_什么样的卖场原则更能体现商业设计的价值!
  5. mysql数据库的逻辑架构和存储引擎
  6. Spring框架(二) ---- bean的歧义性
  7. python有趣的简单代码_简单代码一学就会,Python生成GIF动图
  8. 事务 - TCC模式
  9. lisp ssget 浩辰_ssget 详解
  10. ios 销毁当前页面重新开启_iOS - 切换rootViewController时,销毁之前的控制器
  11. 多种参数的BCH、RS码和(2,1,6)卷积码编码的MATLAB仿真实现
  12. macos系统镜像iso_系统原装ISO镜像软碟通刻录启动U盘教程
  13. java资源文件路径_Java 中获取资源(文件)的路径问题总结
  14. 小米弹性调度平台Ocean
  15. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)
  16. Pandas数据分析14——pandas数据框的多层索引
  17. openwrt源码分析_Luci流程分析(openwrt下)
  18. 全局快门和卷帘快门(Global shutter and Rolling shutter)
  19. 【3D目标检测】Monocular 3D Object Detection with Pseudo-LiDAR Point Cloud
  20. 第11期 Jenkins 社区 2020年 GSoC Phase1 分享

热门文章

  1. java输出0-100之间的偶数、奇数
  2. retroarch java,跨平台模拟器 RetroArch
  3. 如何用Python 求函数 y = sinx 在区间[0, pi/2]上的弧长
  4. springboot计算机专业毕业设计优秀级别最新题目
  5. 一文盘点五款 BLDC 风机参考方案,建议先马
  6. 新研究调查Masimo ORi™(氧储备指数)能否用作避免全麻期间高氧状态的指数
  7. element-ui——timeline时间线组件+自动滚动+v-infinite-scroll无限滚动+动态加载——技能提升
  8. 高效工具推荐:技术人员必备的3个知识收藏工具(浏览器插件)
  9. linux 配置使用ftp 使用账号密码登陆失败
  10. 无头浏览器和抓取-解决方案