Имеет ли смысл создавать индексированное представление, когда данные часто меняются? - PullRequest
0 голосов
/ 18 апреля 2019

У меня около 5 таблиц, в каждой из которых содержится более 1 000 000 наборов данных.

Я читал об индексированных представлениях и о том, что они могут повысить производительность при непрерывных запросах.Но таблицы / данные постоянно обновляются, соответственно, оператор за представлением просто время от времени возвращает часть наборов данных (иногда каждый час, но возможно, что он меняется каждый день или неделю, он колеблется).

Нелегко создавать индекс для каждой из этих таблиц, потому что данные будут расти и расти, и индекс будет больше, чем сами данные (шучу, но в данном случае это действительно неумно)

Итак, что вы посоветуете мне для достижения моей цели - создать представление, которое будет достаточно производительным, чтобы превзойти нормальное утверждение каждый раз, когда мне нужны данные.

1 Ответ

0 голосов
/ 18 апреля 2019

Это не точный ответ, а просто некоторые общие идеи для рассмотрения.

Важной информацией является то, какие индексы имеют 5 базовых таблиц. Если эти индексы полезны для представления, то оптимизатор запросов будет использовать их, поэтому индекс в представлении может не ускорить представление.

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

  1. Если производительность запроса представления важнее скорости обновления таблицы, используйте индексированное представление.

  2. Если данные представления могут кэшироваться и не быть текущими, и если важна скорость обновления таблицы, то вы можете периодически копировать все данные таблицы в таблицу отчетов, например один раз в день или час. На этой таблице отчетов вы можете создать индекс для запросов быстрого чтения.

  3. Если производительность представления не важна, но данные этого представления должны быть текущими, и если важна скорость обновления таблицы, то вам, вероятно, придется использовать неиндексированное представление и, возможно, полагаться на сканирование таблицы для каждый запрос просмотра.

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