【发布时间】:2014-04-19 03:32:42
【问题描述】:
我有一个连接表的查询。这是选择语句:
SELECT *, A.id AS id,
A.username AS username,
G.desc AS customer_desc,
H.id AS counter,
SUM( F.amount_paid )
FROM tblcheckin AS A
LEFT OUTER JOIN tblrate AS B ON B.id = A.rate_id
LEFT OUTER JOIN tblrefaccom_type AS C ON C.id = A.id
LEFT OUTER JOIN tblcust_bill AS D ON D.check_in_id = A.id
LEFT OUTER JOIN tblroom AS E ON E.room_no = A.room_id
LEFT OUTER JOIN tblpayment AS F ON F.check_in_id = A.id
LEFT OUTER JOIN tblrefcust_type AS G ON G.id = A.customer_desc
LEFT OUTER JOIN tblindex AS H ON A.id = H.check_in_id
WHERE A.check_out = "0000-00-00 00:00:00"
GROUP BY F.check_in_id
ORDER BY check_out, check_in
结果:Showing rows 0 - 11 ( 12 total, Query took 7.4061 sec)
这是Explain SQL
这是我到目前为止所做的:
我设置了optimizer_search_depth = 0,因为我认为它会像这里提到的那样工作Joining many tables in mySQL。
我在这里做错了什么?我感谢每一个反馈。谢谢。
更新。问题解决了。我从 tblpayment、tblcust_bill 和 tblindex 向 check_in_id 列添加了索引。这是新的Explain SQL:
【问题讨论】:
-
您正在使用对
GROUP BY的有害 MySQL 扩展。读这个。 dev.mysql.com/doc/refman/5.5/en/group-by-extensions.html -
感谢您的反馈。我已阅读文章并将 F.check_in_id 添加到选择列表中。但是,它仍然很慢。