Я хотел бы знать, будет ли IN кэшировать результат статического сложного запроса или будет выполняться для каждой строки?Текущая производительность SQL Server для IN vs EXIST для сложного статического выбора
ОБРАЗЦА
SELECT a.id, a.name
FROM customer a
WHERE a.id IN (SELECT b.customerId
FROM orders b
JOIN aricle c ON c.orderId = b.id
WHERE b.date = '20160910' and c.costcenter > 1000)
Теперь будет результат подзапроса временно хранится или будет EXIST
быстрее для этого?
Предположим, что результат всего несколько строк < 100, но запрос может быть намного сложнее!
Я знаю, что в этом случае я мог бы также ПРИСОЕДИНИТЬСЯ к столам, но это не главное.
Я особенно заинтересован в поведении тока SQL Server
Спасибо всем :)
Я не совсем понимаю, что вы просите. Не могли бы вы прояснить, что именно вы ищете? –
Я считаю, что IN будет быстрее, потому что SQL Server ищет набор значений, а не EXIST, где ему придется искать, чтобы каждый существовал, прежде чем захватывать каждое значение. С этим запросом, хотя и не было бы слишком облагаться налогом на операцию. –
в основном, 'in' работает медленнее, чем' существует', когда есть большой набор данных для тестирования. если вы говорите о 100 рядах, не должно быть разницы. –