Индексированные представления SQL: что произойдет, если данные изменились - PullRequest
2 голосов
/ 07 января 2010

Я понимаю, что такое индексированное представление, но мне интересно, что именно происходит, когда данные в нижележащих таблицах были изменены? Отброшен ли весь кэш представления или только что измененные строки?

У меня очень сложный запрос к нескольким таблицам (+5), который используется для поиска доступности отелей (+ 100 тыс. Записей), и индексированное представление IMHO может значительно повысить производительность. Но данные (несколько строк) часто меняются (комната была продана, свободные комнаты изменены в административном контроллере), и если представление будет перестраиваться каждый раз, когда менялась только одна строка, для моего приложения это будет узким местом.

Или есть идеи, как "кэшировать" очень коплексные запросы?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 07 января 2010

Из технической документации:

В отличие от обычных индексов, одна строка вставить в любой из участвующих таблицы могут вызывать множественные изменения строк в индексированном представлении. Это потому что одна строка может объединяться с несколькими строки другой таблицы. То же самое true для обновлений и удалений. Следовательно, поддержание индексированное представление может быть дороже чем поддержание индекса на таблица.

Источник:

http://technet.microsoft.com/en-us/library/cc917715.aspx#XSLTsection124121120120

т.е. это звучит так, как будто строки обновляются там, где это уместно, без необходимости обновлять / воссоздавать представление полностью.

0 голосов
/ 07 января 2010

Я предполагаю, что вы используете sql server. 100к + рядов это не много. Если вы присоединяетесь к 5-тым таблицам, я бы посоветовал вам убедиться, что в столбцах, к которым вы присоединяетесь, есть закрывающие индексы, прежде чем рассматривать возможность реализации индексированных представлений. Используйте анализатор запросов, чтобы найти узкое место в вашем запросе напрямую. Если у вас проблемы с производительностью на таких маленьких столах, возможно, там есть скверное сканирование.

...