Какие индексы и где мне следует создать для оптимизации представления? - PullRequest
0 голосов
/ 10 июля 2020

Я работаю с действительно большими наборами данных, в одной таблице сейчас около 90 миллионов записей.

У меня есть представление, LINK, которое объединяет три таблицы. Обычно это выглядит так ...

SELECT ...
FROM Accounts
LEFT JOIN RunInfo
    ON Accounts.File = RunInfo.File
    AND Accounts.AccountName = RunInfo.Account
LEFT JOIN JobInfo
    ON RunInfo.Machine = JobInfo.Machine
    AND RunInfo.Job = JobInfo.Job
    AND RunInfo.File = JobInfo.File
LEFT JOIN Barcodes
    ON RunInfo.RunInstance = Barcodes.RunInstance
    AND RunInfo.File = Barcodes.File
    AND RunInfo.Machine = Barcodes.Machine
    AND RunInfo.Job = Barcodes.Job

В настоящее время у меня есть единственный некластеризованный индекс в Barcodes.barcode (это самая большая таблица в представлении со значительным отрывом), как когда я запускаю запросы, включающие присоединение таблицы к этому массивному представлению, соединение всегда происходит на NewTable.barcode = LINK.barcode.

Я не особо разбираюсь в искусстве оптимизации, поэтому некоторые операции с этим представлением могут занять 15 минут или больше.

Какие индексы мне следует создавать и где это оптимизировать?

...