2013-10-02 4 views
-2

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

Должен ли я создавать кластерный индекс перед запуском приложения (он пуст в начале) или в конце работы?

Может быть, лучше импортировать данные во временную таблицу и вставить ее в основную таблицу каждые X вставок?

+0

Именно так вы знаете - кластерный индекс говорит «ничего» о том, что вы получите строки назад из таблицы на более позднюю дату. –

+0

Какую версию SQL Server вы используете (обновить тег вопроса)? Каков источник данных? Excel, CSV? Обратите внимание на использование возможностей импорта SQL Server вместо написания собственного приложения. – Tony

+0

Источник - это расчеты, выполненные приложением, которые вставляют каждый результат в отдельный запрос. – user2790440

ответ

0

Я бы не советовал удалять и добавлять индексы, когда вам нужно сделать импорт.

Вы отметили, что

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

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

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

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

Альтернативное решение

Вы можете разрешить приложению написать это результаты в файл (быстро), а затем объем импорта результаты в базу данных с помощью SSIS или BULK INSERT.

+0

Я попробую второй подход. Благодарю. – user2790440

Смежные вопросы