use*_*096 7 mysql query optimization order-by
我正在运行需要一些 mysql 优化的 wordpress,我有一个缓慢的查询,我想摆脱“使用临时;使用文件排序”
询问:
解释 SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts 内部连接 wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (1,3,4,5) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') 按 wp_posts.ID 分组 ORDER BY wp_posts.post_date DESC 限制 0, 10;
+----+--------------+------------------------------+------ +---------------------------------+------------------+--- ------+----------------+------+------- ---------------------------+ | 身份证 | 选择类型 | 表| 类型 | 可能的密钥| 关键| 密钥长度 | 参考 | 行 | 额外 | +----+-------------+------------------------------+------ +---------------------------------+------------------+--- ------+----------------+------+------- ---------------------------+ | 1 | 简单 | wp_posts | 参考 | PRIMARY,type_status_date | type_status_date | 62 | 常量 | 4 | 使用哪里;使用临时;使用文件排序 | | 1 | 简单 | wp_term_relationships | 参考 | PRIMARY,term_taxonomy_id | 主要 | 8 | wp.wp_posts.ID | 1 | 使用哪里;使用索引 | +----+-------------+------------------------------+------ +---------------------------------+------------------+--- ------+----------------+------+------- ---------------------------+
我已经上传了 2 个测试表的转储文件(4 个类别和 10 个帖子)
我尝试了很多东西,但没有任何效果,尝试添加索引并强制它们,尝试使用子查询等等,从我看到的主要问题是连接线和 post_date 的顺序,mysql 不能使用 type_status_date 索引进行排序,因为日期列不是“最左边的列”,已经有一个未使用的 post_date 索引,即使我重新排序 type_status_date 中的列也无济于事
谢谢
归档时间: |
|
查看次数: |
2361 次 |
最近记录: |