Добавление представлений к поставщике базы данных и производительности

StackOverflow https://stackoverflow.com/questions/3062474

Вопрос

У нас есть база данных поставщики поставщика, которая к этому вопросу я смог избежать изменения структуры базы данных в. Мы скоро будем непосредственно запрашивать таблицы напрямую для соответствующего проекта. Чтобы повлечь все необходимые данные, нам нужно будет создать большую оператор SQL с несколькими союзами.

select ... from table1
union
select ... from table2
...
select ... from tableN

Скорость является максимальным приоритетом для этого проекта. Было бы быстрее создать представление для выполнения Joins, а затем просто запрашивайте этот вид (и, таким образом, внесение изменений в базу данных поставщиков) или просто запустите оператор Union из нашего приложения?

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

Это было полезно?

Решение

Когда дело доходит до баз данных поставщиков, я был бы очень нерешительным вносить изменения в любые существующие таблицы. Добавление чего-то вроде вида, кажется немного безопаснее, так как вы единственный, кто будет использовать его. Моя самая большая проблема с целью того, как вы когда-нибудь получили обновление от вашего поставщика, который внес изменения в вашу БД, и вы можете потерять вид.

Я не думаю, что вы увидите любые выроды производительности от использования представления, если вы не использовали проиндексированный вид. К сожалению, вы не можете создавать индексы на представлении, созданном с использованием Union (хотя бы на SQL Server).

Лично, когда дело доходит до нанесения логики в приложении VS, положив его в БД, я наклоняюсь к БД. В моем опыте, эти типы изменений легче развернуть и обслуживать.

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

Другие советы

Нет мнения не будет быстрее (кроме времени разработки).

Что бы быстрее - это использовать союз все, если оно будет работать. Союз ищет дублированных записей и удаляет их от окончательного результата. Если вы знаете записи по дизайну (например, каждая таблица, предназначена для разных клиентов или каждую таблицу, имеет дифференцированный диапазон дат), не может быть продублирован, Union все не пытается отличаться от результатов и, таким образом, работает намного быстрее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top