Эффективность SQL - что быстрее? - PullRequest
0 голосов
/ 03 августа 2010

Я делаю массовую вставку, но перед вставкой в ​​реальную таблицу мне нужно сделать некоторые проверки. В настоящее время я вставляю в временную таблицу, но я только что видел, что можно объявить таблицы. Итак, мой вопрос - что быстрее? СОЗДАТЬ или ОБЪЯВИТЬ. В таблице будет сделано несколько SELECTS, и она будет содержать около 200 000 записей.

DECLARE @tbl1 TABLE
(
col1 VARCHAR(10)
)

или

CREATE TABLE tbl1
(
col1 VARCHAR(10)
)

Наконец, возможно ли изменить объявленную таблицу?

Спасибо за объявление.

1 Ответ

3 голосов
/ 03 августа 2010

@tbl табличные переменные хранятся в памяти, но если высокое давление в памяти, они будут перетекать в базу данных tempdb .

. Не допускается использование DDL для @tbl переменных, как задумано (без индексов, статистики и пр.).

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

Производительность зависит от того, как настроен SQL Server и сколько ресурсов выделено для базы данных tempdb.

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

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

Единственный способ получить однозначный ответ - это измерение в вашей среде (заметьте, довольно часто производство настраивается иначе, чем dev, помните об этом)

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