【发布时间】:2011-11-23 20:56:31
【问题描述】:
这是一个有点奇怪的问题,所以最好的提问方式是举个例子。我有一份客户名单。我想获得在CourseHistory 表或Access 表(或两者)中有相应条目的任何客户。
我想要获取这些客户的最佳单一查询(无子查询)。我想出了
SELECT
c.cusid
FROM
Customers c
CROSS JOIN Realms r
LEFT JOIN Course.CourseHistory ch ON (c.cusid = ch.cusid)
LEFT JOIN Access a ON (c.cusid = a.cusid AND r.realmid = a.realmid)
WHERE
realmname = 'Course'
AND COALESCE(chid, accid)
这可行,但速度很慢,可能是因为它必须对Customers 进行全面扫描。由于 CourseHistory 或 Access 可以为 null 并且结果仍然有效,因此它们必须保持连接。有没有更正确的方法来做这个查询?
【问题讨论】:
标签: mysql