【发布时间】:2014-12-21 10:23:02
【问题描述】:
您好,我喜欢通过查询下订单。 这是我的查询:
SELECT a.status,a.title,a.id,
b.deployed,b.accepted,b.rejected,b.error
FROM a
LEFT JOIN b ON ( a.id = b.id )
WHERE b.agencyid = 1 AND a.userid = 3
ORDER BY a.date DESC
LIMIT 0,50
如果没有 ORDER BY 子句,查询需要 0.006 秒 使用 ORDER BY 子句需要 1.1181 s !!!
最耗时来自Copying To Tmp Table 1,1 s 99,78% 1 1,1 s 如何减少复制到 tpm 表的时间?
【问题讨论】:
-
对表的日期列使用索引。
-
你的临时表在哪里?我在上面的代码中没有看到它。您确定只是这部分需要很长时间,还是您也有 proc 和其他查询?
-
请提供:1. 两个表的完整模式(使用
SHOW CREATE TABLE) 2. 给定查询的EXPLAIN。 PS:表b上的谓词之一是否在WHERE子句中而不是ON中?如果是这样 - 为什么是LEFT JOIN而不是INNER JOIN? -
这是一个内部连接。删除 LEFT 关键字
标签: mysql performance sql-order-by