2016-11-24 2 views
0

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

  • Эта таблица будет чистить ежедневно с помощью пакетного задания (HardDelete)
  • никаких ограничений не требуется для этой таблицы (как это может поставить под угрозу производительности)
  • скорости будет главной заботой

Фон состоит в том, что изначально существует действие поиска через большой размер таблицы (говорит tableA), поскольку всегда есть новая вставка, поэтому таблица выросла в большой размер. Теперь, когда в таблицу добавляется новая вставка, мы вставляем ее в эту новую таблицу, и поиск будет проводиться против этой новой таблицы, а так как эта новая таблица будет иметь жесткое удаление batchjob на ежедневной основе, размер будет много контролируемым.

Теперь мне интересно, какие у меня есть опции для вставки данных в эту новую таблицу. Моя текущая опция - либо поставить триггер на tableA, либо обычным способом (переход через код сервера для вставки данных в эту новую таблицу после вставки в таблицу A). Есть ли другой вариант, который может помочь в повышении скорости?

+2

Другой вариант, который может или не подходит для вашего прецедента, имеет индексированные представления. https://www.brentozar.com/archive/2013/11/what-you-can-and-cant-do-with-indexed-views/ – mendosi

ответ

0

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

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

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