2010-08-13 1 views
0

мне нужно сделать много обработки на столе, который имеет 26+ миллионов строк:Лучшая практика для работы на больших объемах данных

  1. определить правильный размер каждого столбца на основе указанных данных столбца
  2. Определите и удалите повторяющиеся строки.
  3. Создать первичный ключ (автоматический инкрементацию идентификатор)
  4. Создать естественный ключ (ограничение уникальности)
  5. Добавление и удаление столбцов

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

Большое спасибо.

UPDATE: не нужно беспокоиться о совместимых пользователях. Кроме того, в этой таблице нет индексов. Эта таблица была загружена из исходного файла. Когда все будет сказано и сделано, будут индексы.

ОБНОВЛЕНИЕ: Если вы используете другой список из того, что я перечислил, не стесняйтесь упомянуть его.

На основе замечаний до сих пор и то, что я нашел работал:

  1. Создать подмножество строк из 26+ миллионов строк. Я обнаружил, что 500 000 строк хорошо работают.
  2. Удалять столбцы, которые не будут использоваться (если таковые имеются)
  3. Установите соответствующие длины типов данных для всех столбцов в одном сканировании с использованием макс (Len())
  4. Создать (уникальный, если это возможно) кластерный индекс на колонке/столбцы, которые в конечном итоге станут естественным ключом.
  5. Повторите шаги 2-4 по всем строкам
+0

Есть ли у вас беспокоиться о одновременных пользователей? Какова текущая структура таблицы, включая индексы? –

+0

Это то, что я делаю для нашего процесса ETL. Мне не придется беспокоиться о других пользователях. –

+0

Что вы будете использовать в качестве кластеризованного индекса?Каков типичный размер и типы данных столбцов, которые вы удаляете? –

ответ

2

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

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

+0

Это не приведет к сокращению удаления столбца ввода-вывода только в метаданных в SQL Server. –

+0

@Martin Smith: Шаг 1: Нет смысла знать правильный размер столбца, если вы собираетесь удалить, так или иначе, поэтому вы экономите время на этом этапе, просто удалив этот столбец. Шаг 2: его также не нужно читать, когда он сравнивает строки, чтобы увидеть, являются ли они дублирующими, - здесь также сохраняется время. –

+0

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

0

заказа: 5, 2, 1, 3, 4

1: Ни в коем случае вокруг него: Выберите Max (Len (...)) От ...

2: Это все зависит от что вы считаете дубликат.

3: ALTER TABLE в онлайн-книгах расскажет вам, как это сделать. На самом деле, нет возможности ускорить это.

4: См 3.

5: См 3.