Альтернатива SELECT DISTINCT

Я не слишком хорошо знаком с SQL-запросами, но заметил значительное снижение производительности при выполнении запроса с помощью Select Distinct. Я запускаю SQL Server 2008 R2. Ниже мой запрос:

select distinct CL.ClientID, NL.Name from CL CL inner join PR PR on CL.ClientID = PR.ClientID where PR.WBT1 in (Select distinct WBT1 from TabFields where custInclude = 'Y' and WBT2 = '') and PR.WBT2 = '' order by NL.Name 

Кто-нибудь знает, как пересмотреть этот запрос, не используя выделение, чтобы ускорить запрос, возвращая те же результаты? Любая помощь приветствуется. Благодарю.

    Вам определенно не нужен второй SELECT DISTINCT . Вы можете заменить его на EXIST :

     select distinct CL.ClientID, NL.Name from CL CL inner join PR PR on CL.ClientID = PR.ClientID WHERE EXISTS (SELECT 1 from TabFields where WBT1=PR.WBS1 AND custInclude = 'Y' and WBT2 = '') and PR.WBT2 = '' order by NL.Name 

    И я не вижу NL в FROM /JOIN . Вы пропустили это, или это должно быть CL ?

    Вам нужно только DISTINCT из-за JOIN.

    Поэтому не используйте JOIN: используйте EXISTS и нажимайте все таблицы, которые вы на самом деле не выбираете из предложения EXISTS

     select CL.ClientID, CL.Name from CL CL WHERE EXISTS (SELECT * FROM PR PR JOIN TabFields TF ON PR.WBT1 = TF.WBT1 WHERE PR.WBT2 = '' AND TF.custInclude = 'Y' and TF.WBT2 = '' AND CL.ClientID = PR.ClientID ) order by CL.Name 
    Interesting Posts

    Что касается удаления записи

    Crystal Reports не отображает результаты хранимых процедур

    Вставка нескольких значений в таблицу со строковым вводом

    Создание таблицы SQL из объединенного списка запятой

    нужна помощь в написании сводного запроса для выбора столбцов из разных операторов выбора

    Как запретить SQL Server принимать пустую строку

    Unicode при обновлении до IIS 7

    В чем проблема с использованием подстановочных знаков для выбора столбцов?

    Как выбрать одну родительскую строку и дополнительные строки для своих детей без UNION?

    Строка подключения SQL Server 2008 R2

    Что произойдет, если шаги задания SQL Server изменены во время выполнения

    Msg 2812: «Создать таблицу с использованием динамического скрипта»

    простая хранимая процедура для обновления таблицы не может найти параметр

    SQL влияет на количество строк из партии операторов

    Почему мой запрос медленный для получения записей с большим смещением?

    Давайте будем гением компьютера.