Как улучшить производительность запросов, вставляя данные в несколько таблиц, которые их объединяют - PullRequest
0 голосов
/ 31 января 2019

Итак, в моей первой таблице я получаю только идентификаторы.Затем создайте и заполните несколько переменных таблицы и отфильтруйте ее по:

where exists(select * from @ID d where d.ID = @TableData.ID) 

, чтобы структура выглядела следующим образом:

    --------------------------------------------
    declare @DateFrom datetime
            @DateTo datetime 
        --table that contain IDs only
              declare @ID table (ID int) 
              insert into @ID 
                select ID 
                from Table
                where dates between @DateFrom and @DateTo 

        --table with data
        declare @TableData
              select 
                case...
                case...
                case...
                case...
            from Table1
                    join Table1
                    join Table1
                    join Table1
            where exists(select * from @ID d where d.ID = @TableData.ID) --filtering only match IDs from @ID table

------------------------------------------------------------------

Можно ли каким-либо образом улучшить производительность?

Я попытался создать #TempTable, но без улучшений.

Я думал, может быть, есть способ создать индекс для табличных переменных или временных таблиц?

1 Ответ

0 голосов
/ 31 января 2019

Вы можете создавать переменные таблицы с первичным ключом, но не можете использовать некластеризованные индексы.

Если вам нужно использовать индексы для временных таблиц, вы должны использовать вместо них #tempTables.Затем вы можете создавать индексы на них.При работе с большими наборами данных # работает лучше, чем @.

...