@ talendguy, сначала скажите нам свое требование. Для чего нужно объединить столько таблиц только для того, чтобы получить счет и сумму из одной таблицы.
Внимательно пересмотрите те таблицы, которые требуются для каждой таблицы.
Из вашего запроса выясняется, что большинство таблиц связаны с rtv_turnover_transaction
.
Создать некластеризованный индекс для всех тех столбцов rtv_turnover_transaction, которые используются в условии соединения.
Вы можетеоставьте те столбцы, которые принадлежат маленькой таблице.
Если ваш запрос все еще медленный, тогда определите ограничение PK-FK relationship
и Trusted Check
.
Таким образом, нет необходимости создавать так много индексов. Trusted relationship
help optimizer
Когда первичные и внешние ключи определены как ограничения в схеме базы данных, сервер может использовать эту информацию для создания оптимальных планов выполнения.
Дальнейшее чтение
создать отдельный Non Clustered Index on trans_date
В таблице rtv_transactions
создать некластеризованный индекс для card_num
Также, если READ UNCOMMITTED
Данные не являютсяпроблема или естьнет никаких шансов на READ UNCOMMITTED
данные, тогда вы можете безопасно использовать WITH (NOLOCK)
подсказку во всех таблицах.
rtv_turnover_transaction WITH (NOLOCK)
Примечание: я не говорю вам, чтобы вы использовали вслепую WITH (NOLOCK)
подсказку, но если обстоятельства позволят вам, тоэто очень производительно.
Вы можете прочитать Benefit and Limitation of Nolock
.