2016-06-17 2 views
0

У меня есть довольно простой запрос, например, как показано ниже, что я необходимость выполнять очень часто, и как можно быстрее:Speed ​​Index оздоровительную

Select 
    B.ID, B.FirstName, B.LastName 
From 
    TableA as A 
Join 
    TableB as B on A.ID = B.ID 
Where 
    A.OtherID = @Input 

Так что моя мысль была создать хранимую процедуру с параметрами @Input. Я полагаю, что, поскольку план выполнения был сохранен на стороне сервера, это увеличило бы скорость.

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

Какая информация вам понадобится, чтобы помочь мне создать индекс, который может вам помочь? Помог бы ли индекс?

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

Мы используем SQL Server 2012.

+2

Хранимая процедура сама по себе является *** НЕ *** любой быстрее, чем правильно запрограммированный ad-hoc-запрос - в обоих случаях план выполнения создается при первом использовании и хранится в кеше и повторно используется последующие вызовы. –

+0

Интересно, что я, должно быть, неправильно понял или неправильно понял то, что я прочитал об этом. Но это сократит пропускную способность, если будет иметь код на стороне сервера? –

ответ

1

SQL Server Management Studio удивительно хорошо рекомендующих индексов. Запустите свой запрос и посмотрите, что он говорит.

Не зная больше о вашей схеме или моделей OLAP, я могу только сделать предложение ...

Is «ID» ключ в поле TableA и/или TableB? Если это так, они уже проиндексированы.

Я бы сказал, что вы смотрите на двух индексов:

  1. Индекс по TableA для OtherID, который включает в себя идентификатор. Это поможет SQL найти значения OtherID и вернуть связанные с ними идентификаторы.

  2. Индекс на TableB на идентификаторе, который включает FirstName и LastName. Это поможет SQL с соединением и сохранит поездку обратно к строкам для FirstName и LastName.

+0

yes in tableA OtherID является Первичным ключом, а идентификатор TableB является Первичным ключом. Значит, он уже должен быть настроен так, как мне нужно? –

+0

Это часть удовольствия! Я не знаю, настраиваетесь ли вы так, как вам нужно, - играйте с индексами, когда я опишу, и посмотрим, улучшится ли ваш запрос. – n8wrl

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

  • Нет связанных вопросов^_^