【发布时间】:2020-07-02 06:28:50
【问题描述】:
查询
SELECT SQL_CALC_FOUND_ROWS wp29174960179_posts.*
FROM wp29174960179_posts
JOIN wp29174960179_plugin_wpf_products_attribute_79_numbers pan ON pan.product_id = wp29174960179_posts.ID
WHERE pan.number BETWEEN 10 and 10000
ORDER BY wp29174960179_posts.post_date ASC LIMIT 0, 9;
这个查询太慢了(需要 2 秒)。 预期执行时间
wp29174960179_plugin_wpf_products_attribute_79_numbers 表中有 80 000 条记录。
wp29174960179_posts 表中有 100 000 条记录
wp29174960179_plugin_wpf_products_attribute_79_numbers 表有 2 个索引
ix__number__product_id (product_id, number)
ix__product_id__number (number, product_id)
ID字段的*wp29174960179_posts有index
尽管有这些索引。查询需要 2-3 秒
SQL 完整代码片段链接:
https://www.db-fiddle.com/f/4Vk97FhArBVJ1Eb1BAubNB/0#&togetherjs=8KQQacE4Vt
【问题讨论】:
-
SQL_CALC_FOUND_ROWS成本很高。看看没有它时它的运行速度有多快。
标签: mysql sql performance join query-optimization