Различия между Sql существует и в

Sql Exists vs In

Решение проблем в TSQL доступно различными способами, а желаемые результаты можно увидеть с помощью любого из них. Одним из способов достижения конечных результатов является использование предложений IN и EXISTS. Использование предложений помогает фильтровать набор результатов со ссылкой на доступный подзапрос. Выполнение IN и EXISTS немного отличается, и именно эти различия оцениваются.

Существуют различные факторы, которые определяют, будут ли развернуты IN или EXISTS. Одним из них является количество данных, доступных в таблице. Огромное количество данных приводит к тому, что сервер SQL возвращается к использованию сканирования индекса, а не к поиску индекса.

Различия

Приведенная статистика также многое говорит о плане выполнения, который должен соблюдаться. Разница показывается, когда на сервере накоплено достаточно статистики для принятия правильного решения и когда статистики нет в первый раз. Используемое оборудование также определяет, будут ли использоваться IN или EXISTS. Это в значительной степени зависит от количества доступных процессоров.

EXISTS запускаются, когда необходимо сопоставить результаты запроса с другим подзапросом. IN, с другой стороны, используется при получении значений определенных столбцов, которые лежат в списке. Решение о том, что использовать, основано исключительно на уместности, т. Е. Когда вы чувствуете, что его использование целесообразно.

В случае, если используется подзапрос и возвращается нулевое значение, весь оператор становится NULL. Это фактически указывает на использование ключевого слова EXISTS. Использование ключевого слова IN происходит, когда требуется сравнение различных значений в подзапросах. Ключевое слово EXISTS в основном используется для оценки операторов true или false, а IN используется в большинстве соответствующих операторов подзапроса..

В общем случае EXISTS будет быстрее, чем IN, потому что при запуске EXISTS поиск обнаружил попадание и будет проверять, было ли условие выполнено. При запуске IN он собирает все результаты из подзапроса и представляет их для дальнейшей обработки, и этот процесс занимает некоторое время..

Важно отметить, что формулировка запроса должна быть выполнена правильно и проверяться перед выполнением. Неспособность обеспечить правильность запроса приводит к тому, что EXISTS и IN представляют разные значения, и это не является целью их использования в SQL-сервере. Оптимизатор всегда должен быть оптимальным при работе как надо.

Резюме

Решение проблем в TSQL обычно выполняется с помощью EXISTS и IN.

Небольшие различия наблюдаются при развертывании EXISTS и IN, хотя оптимизация для каждого должна давать одинаковое значение.

Статистика является одним из факторов, определяющих, будут ли развернуты EXISTS или IN

Используемое оборудование также имеет решающее значение при определении необходимости развертывания EXISTS или IN.

Запуск EXISTS будет полезен, когда необходимо сопоставить результаты данного запроса с другим подзапросом. EXISTS также очень часто встречается, когда истинные или ложные утверждения требуют оценки.

IN обычно используется, когда необходимо извлечь определенные столбцы в списке. Также обычно используется, когда требуется сравнение значений в подзапросах..

EXISTS, как правило, быстрее, чем IN, поскольку он работает, находит хит и проверяет, подтвердилось ли условие

IN медленнее, так как он собирает все результаты из подзапроса и обрабатывает его.

Хотя присутствуют разные исполнения, оптимизация должна давать схожие результаты в EXISTS и IN.