【发布时间】:2013-03-24 17:53:05
【问题描述】:
我试图弄清楚为什么查询需要这么长时间,以便我可以优化它。
我用 EXPLAIN 试过了:
EXPLAIN SELECT * FROM (
SELECT p.*, ol. prod_id olpid
FROM products p LEFT JOIN orderlines ol
ON p. prod_id = ol. prod_id ) pol
WHERE pol. olpid IS NULL
ORDER BY category , prod_id;
当我在 Workbench 上运行此程序时,我在 10 分钟(600 秒)后收到连接丢失的错误代码。在我在Prod_ID 中设置Index 后,查询会在大约一秒(完美)内回答,在此之前,几乎不可能得到答案。
EXPLAIN PLAN 也可以在几秒钟内执行它。
我仍然想在 before 使用索引的查询上使用 EXPLAIN。
这里有什么想法吗?
【问题讨论】:
-
您是在 product 或 orderlines 表中添加索引吗?
-
我将 orderlines 中的索引添加到 product_ID:ALTER TABLE orderlines add index PROD_ID(PROD_ID);
标签: mysql sql query-optimization sql-execution-plan full-table-scan