2016-07-05 5 views
0

Я читал, что запрос на соединение обычно более эффективен в подзапросе.Mysql subquery conversion inner join

Мне было интересно, можно ли преобразовать запрос ниже для объединения. Человек, я не понимаю, как это возможно.

Как раз для того, чтобы вы знали, вычисление расстояния дорого, я просто хочу выполнить его на подмножестве (результат подзапроса). Но тогда внешний запрос не сохраняет «порядок». Вот почему я должен выполнить второй порядок по внешнему запросу.

Есть ли способ сделать это лучше?

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 

ответ

0

ВЫ МОЖЕТЕ ИЗМЕНИТЬ ЕГО INNER JOIN следующим

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