2016-07-18 2 views
0

ли лучше (с точки зрения производительности, скорости и т.д.), чтобы написатьПодзапрос EXISTS: SELECT 1 или SELECT * FROM X performant в Postgres?

SELECT * FROM a WHERE (EXISTS (SELECT * FROM b))

или

SELECT * FROM a WHERE (EXISTS (SELECT 1 FROM b))

в PostgresSQL?

p.s. This question отвечает на мой вопрос для MS SQL Server, но как насчет PostgresSQL?

ответ

2

Пер the documentation:

Поскольку результат зависит только от того, будут возвращены все строки, и не на содержание этих строк, список вывода подзапроса является обычно несущественно.

+0

Что означает «несущественный». Они явно семантически одинаковы, но я хочу знать, является ли один из них более результативным, чем другой (и я не уверен, как это сделать) – fatuhoku

+0

В контексте * Подзапрос обычно будет выполняться только достаточно долго, чтобы определить, возвращается ли хотя бы одна строка, а не весь путь к завершению * (для документации) Я понимаю, что нет никакой разницы. Вы можете протестировать его с помощью 'explain analyse' - у меня есть точно такие же планы выполнения. – klin

+0

Спасибо @klin, это действительно хорошо знать! – fatuhoku

Смежные вопросы