这是正确而快速的查询吗?

时间:2014-02-04 06:45:33

标签: mysql

我需要在以下作业中进行最佳SQL查询。 我有这些表:

host: idhost
table:  idtable, idhost
reservation: idtable, start, stop

我需要那些在一段时间(2014-03-03 12:00 - 2014-03-03 14:00)有任何免费桌面的主持人。

我使用此查询(我确定这会给出正确的结果)

SELECT idhost FROM idhost WHERE idhost NOT IN (
    SELECT idhost FROM host INNER JOIN table USING (idhost) INNER JOIN reservation USING (idtable)
        WHERE :start BETWEEN start AND stop OR :stop BETWEEN start AND stop OR :start < start AND stop > :stop)

但是有人说以下查询更快并且返回同一个主机,但我不确定:

SELECT * FROM host  
    JOIN table USING (idhost)  
        LEFT JOIN reservation ON reservation.idtable = table.idtable AND  
             :start >= reservation.start AND :stop <= reservation.stop  
WHERE reservation.idtable IS NULL 

它是否正确且更快?或者有更好的查询?

提前谢谢!

0 个答案:

没有答案