【发布时间】:2010-03-13 08:12:35
【问题描述】:
我有一个查询,它获取了一位客户和该客户的最新交易。目前,对于 1000 条记录,此查询需要 45 秒以上。这尤其成问题,因为脚本本身可能需要每分钟执行一次!
我相信使用子查询可能是答案,但我在构建它以实际给我需要的结果时遇到了麻烦。
SELECT
customer.CustID,
customer.leadid,
customer.Email,
customer.FirstName,
customer.LastName,
transaction.*,
MAX(transaction.TransDate) AS LastTransDate
FROM customer
INNER JOIN transaction ON transaction.CustID = customer.CustID
WHERE customer.Email = '".$email."'
GROUP BY customer.CustID
ORDER BY LastTransDate
LIMIT 1000
我真的需要尽快解决这个问题。任何帮助将不胜感激!
【问题讨论】:
-
在 mysql 上运行查询“EXPLAIN your_query_here;”结果可能会对您有所帮助。
-
尝试在实际服务器上运行 EXPLAIN
并发布结果。 -
是的,请显示 EXPLAIN 和表结构。我还建议阅读stackoverflow.com/questions/1204402/…
-
@clyfe:显然我们同意。 @Brian Lacy:请参阅 dev.mysql.com/doc/refman/5.1/en/using-explain.html 了解输出说明(将 5.1 更改为相关服务器版本)。
-
我想你可能有更大的问题。 transaction.* 将从客户的某些交易记录中返回随机值,但不一定从具有最大交易日期的记录中返回随机值。这就是你想要的吗?
标签: sql mysql optimization