簡體   English   中英

MySQL子查詢轉換內部聯接

[英]Mysql subquery conversion inner join

我讀過,加入請求通常比子查詢更有效。

我想知道下面的查詢是否可以轉換為聯接。 從個性上講,我不知道這是怎么可能的。

眾所周知,距離的計算非常昂貴,我只想對一個子集(子查詢的結果)執行該操作。 但隨后,外部查詢不會保留“ order by”。 這就是為什么我必須對外部查詢執行第二次排序的原因。

有什么辦法可以做得更好?

 SELECT alias.*, [calculation of distance using table cities] AS distance
 FROM ( SELECT item.*  FROM item  
        WHERE  item.postalCode IN ([Array of postal codes]) 
        ORDER BY item.creationTimestamp ASC LIMIT 0, 19 ) as myalias,
       country_cities 
 WHERE cities.postalCode = alias.postalCode 
 ORDER BY myalias.creationTimestamp ASC

您可以按以下方式將其更改為內聯接

SELECT alias.*, [calculation of distance using table cities] AS distance
 FROM ( SELECT item.*  FROM item  
        WHERE  item.postalCode IN ([Array of postal codes]) 
        ORDER BY item.creationTimestamp ASC LIMIT 0, 19 ) myalias INNER JOIN country_cities  
 WHERE cities.postalCode = alias.postalCode 
 ORDER BY myalias.creationTimestamp ASC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM