Индекс для использования предложения IN в условии where - PullRequest
0 голосов
/ 29 октября 2019

Мое приложение обращается к данным из таблицы в SQL Server. Предположим, имя таблицы - PurchaseDetail с некоторыми другими столбцами. Запрос на выборку имеет ниже предложения where. 1. name - name имеет только 10000 значений. 2. createDateTime

Фактический запрос:

select *
from PurchaseDetail
where name in (~2000 name)
and createdDateTime = 'someDateValue';

Советник по настройке SQL дал некоторые рекомендации. Я пытался с этими рекомендованными индексами. Производительность немного увеличилась, но не полностью.

Что-то не так в моем запросе? или есть ли возможность изменить / улучшить мой запрос на выборку? Потому что я не использовал IN в предложении where раньше. В моей таблице более 100 миллионов записей.

Любое предложение, пожалуйста?

1 Ответ

4 голосов
/ 29 октября 2019

В этом случае использование IN для такого большого количества данных не годится вообще. этот лучший способ - использовать INNER JOIN. Было бы лучше, если бы вставить эти имена во временную таблицу и INNER JOIN сделать это с помощью запроса SELECT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...