Подтвердить что ты не робот

Что использовать? Просмотр или временная таблица

У меня есть проблема решить, использовать ли таблицу просмотра или временную таблицу.

У меня есть хранимая процедура, которую я вызываю из программы. В этом SP я сохраняю результат длинного запроса в таблице temp, назовите столбцы и сделайте другие запросы в этой таблице, сохраните результаты в методах или gridview или что-то еще, и опустите таблицу Temp. Я мог бы также сохранить результат запроса в представлении и сделать запросы в этом представлении. Итак, что лучше или в каком случае я должен использовать таблицу VIEW/Temp.

Согласно моему исследованию, представление имеет преимущество: Спецификация безопасности, простоты и имени столбца. Моя временная таблица тоже выполняет все это (по моему мнению).

4b9b3361

Ответ 1

Если запрос "длинный" и вы получаете доступ к результатам из нескольких запросов, тогда лучше выбрать временную таблицу.

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

В SQL Server вы также можете использовать переменные таблицы (declare @t table . . .).

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

Ответ 2

зависит

Представление должно реплицировать обработку вашего "длинного запроса" каждый раз при его запуске, в то время как таблица temp сохраняет результаты.

так что вы хотите использовать больше обработки или больше памяти?

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

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

Ответ 3

Это действительно ситуационный и операционный вопрос и ответ могут варьироваться в зависимости от требований сценария. Тем не менее, небольшая точка, которую я хотел бы добавить, заключается в том, что если вы используете представление для хранения результатов сложного запроса, которые, в свою очередь, используются в операциях GridView, тогда может быть проблематичным выполнять операции обновления на сложных представлениях, Наоборот, таблицы Temp могут быть достаточно для этого.

Опять же, Есть сценарий, где Views может быть лучшим выбором [как в нескольких серверах баз данных, если не обрабатывается должным образом], но это зависит от того, что вы хотите сделать.

Ответ 4

Я хотел бы также упомянуть это для временной таблицы,

Вы не можете ссылаться на таблицу TEMPORARY более одного раза в одном запросе.

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

Ответ 5

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

Представление не сохраняет данные (в принципе): каждый раз, когда вы ссылаетесь на представление, SQL использует логику из представления для доступа к исходной таблице. Таким образом, вы не захотите строить представление на представлении или использовать несколько ссылок на представление со сложной логикой.