Обычно сопровождают представления для каждой таблицы, у которой есть поле IsActive? - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть несколько таблиц, в которых есть столбец IsActive, который указывает, активна ли запись или удалена.Эти таблицы используются довольно часто.

Распространено ли создавать представление для каждой из этих таблиц и выбирать только записи, для которых IsActive имеет значение true?Или это перебор?

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Представление - это просто сохраненный запрос - он будет выполняться точно так же, независимо от того, проверяете ли вы isActive в представлении или в предложении where.

Если вы часто используете строки isActiveчаще смотрите отфильтрованные индексы .Например, у нас есть система тикетов, где 99% активности связано с открытыми тикетами.Нам удалось значительно повысить производительность, добавив отфильтрованные индексы только для активных заявок.

2 голосов
/ 17 февраля 2011

Распространено ли создавать представление для каждой из этих таблиц и выбирать только записи, для которых IsActive имеет значение true?Или это перебор?

Не столько перебор, сколько сомнительный дизайн.

Подход часто называют «мягким» удалением, когда запись помечается с определенным статусом.контролировать его видимость.Это экономит место, но позволяет легко восстанавливать записи - иначе у вас останется восстановление из резервных копий (или, что еще хуже, из журналов транзакций).

Я бы не использовал представление о том, что должно быть всам стол.Нематериализованное представление - это просто макрос, который заменяет ссылку на представление запросом, который он инкапсулирует - для каждого экземпляра в данном запросе.Это дает небольшой выигрыш в производительности, поскольку основной запрос, скорее всего, будет кэширован.Материализованное представление (индексированное представление в терминологии SQL Server) было бы лучшей идеей, чем нематериализованное представление, но вы могли бы сделать то же самое, просто проиндексировав столбец состояния (2008+, может быть рассмотрен фильтрованный индекс).в самой таблице тоже без беспорядка.Это зависит от ситуации, поэтому вам, в конечном счете, придется самостоятельно проверить и проверить данные на основе данных и настроек.

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

0 голосов
/ 17 февраля 2011

Вероятно, стоило бы индексировать представление. Это зависит от активного / неактивного разделения. Неиндексированное представление - это просто макрос, который расширяется, и всегда соблазнительно добавлять JOINS, что повышает производительность при соединении представления с представлением и т. Д.

И с SQL Server 2008 добавление отфильтрованного индекса в IsActive

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