сбивать логические чтения - PullRequest
0 голосов
/ 03 августа 2020

Я использую базу данных stackoverflow2013, и мой запрос

select p.CreationDate, p.title,
c.Text,
c.Score
from comments c join posts p on c.PostId = p.id
where p.CreationDate between ‘2008-08-29 00:00:00’ and ‘2008-09-02 23:59:58’ order by c.score desc

и перед созданием индекса, который я получил ниже, время выполнения составляет 18 минут и 26 секунд

    (2055 rows affected)

Table ‘Worktable’. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Table ‘Workfile’. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Table ‘Comments’. Scan count 1, logical reads 1028410, physical reads 4, read-ahead reads 1027512, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Table ‘Posts’. Scan count 1, logical reads 4184557, physical reads 0, read-ahead reads 4178310, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

, затем я пошел и создал следующие индексы

create index forcomments on dbo.comments(postid asc ,  Score desc) include (text)
create index forposts on dbo.posts(creationdate asc) include (title)

после создания этого запроса, производительность запроса феноменальна. общее время выполнения теперь составляет 0 секунд.

(2055 rows affected)
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Comments'. Scan count 4536, logical reads 19562, physical reads 0, read-ahead reads 1, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Posts'. Scan count 1, logical reads 26, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Я хочу спросить, как мы можем сделать логическое чтение даже ниже, чем у нас уже есть?

Мало очков - Статистика актуальна, и при анализе плана выполнения не было обнаружено неправильного количества элементов.

1 Ответ

1 голос
/ 03 августа 2020

Я хочу спросить, как мы можем сделать логическое чтение даже ниже, чем у нас уже есть?

Единственным способом материализовать соединение - это индексированное представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...