SQL Select занимает слишком много времени на столе с 25M записью - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно выбрать из LogTable с 25 000 000 записей строк в диапазоне дат

    SET STATISTICS TIME ON 
    SET STATISTICS IO ON

    SELECT LogId, LogDate FROM LogTable 
    WHERE LogDate >= '10/4/2017 12:00:00 AM' and LogDate < '10/4/2018 9:32:29 AM'


    SQL Server parse and compile time: 
       CPU time = 0 ms, elapsed time = 0 ms.

    (5258811 row(s) affected)
    Table 'LogTable'. Scan count 1, logical reads 16974, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 
     SQL Server Execution Times:
       CPU time = 2125 ms,  elapsed time = 30464 ms.

Какие есть варианты для повышения производительности в MS SQL 2014?Я читал о разделах таблиц, но не уверен, поможет ли это.

1 Ответ

0 голосов
/ 04 октября 2018

Вы выбираете 5M строк из 25M: то есть вы выбираете 20% таблицы.

Типичные индексы на самом деле не будут работать с таким высоким процентом.

Однако вы все равно можете использовать «индекс покрытия», который может сделать его быстрее.Попробуйте и посмотрите:

create index ix1 on LogTable (LogDate, LogId);
...