нужен индекс, чтобы этот SQL-запрос работал быстрее - PullRequest
1 голос
/ 14 февраля 2011

вот запрос, с которым я застрял:

SELECT *
FROM   customers
WHERE  salesmanid = @salesrep
        OR telephonenum IN (SELECT telephonenum
                            FROM   salesmancustomers
                            WHERE  salesmanname = @salesrepname)
ORDER  BY customernum  

Это МЕДЛЕННО и сокрушает мой ЦП на 99%. Я знаю, что индекс поможет, но не уверен, какой это тип, или если он должен быть 2 или 1 с обоими столбцами.

Ответы [ 3 ]

0 голосов
/ 14 февраля 2011

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

Было бы полезно, если бы вы сказали нам, какие схемы таблиц у вас есть, а также детали существующих индексов (ваши PK получат кластерный индекс по умолчанию, если вы не укажете иначе) и некоторые подробности о размере таблиц / селективности. 1003 *

Пользователи

SalesmanId    
TelephoneNum   

SalesmanCustomers

SalesmanName
0 голосов
/ 14 февраля 2011

Я полагаю, что в дополнение к столбцам, предложенным @Martin, также требуется индекс CustomerNum , поскольку он используется в предложении order by.OrderBy - это то, что занимает много времени.Вы также можете попробовать выполнить запрос без заказа и посмотреть, сколько времени это займет.

0 голосов
/ 14 февраля 2011

Посмотрите на План выполнения запроса и посмотрите, происходит ли какое-либо сканирование таблицы. Это поможет вам определить, какие индексы вам нужны.

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