Улучшение производительности базы данных SQL Server - PullRequest
3 голосов
/ 09 января 2012

Я разрабатываю решение для создания отчетов, которое использует SQL Server 2008 R2 в качестве своей базы данных.Схема базы данных довольно проста.Одна таблица с именем Calls с CallId PK и одна таблица с именем Events, которая связана с внешним ключом для вызовов с fk_CallId.

В каждом вызове есть как минимум 6-7 событий, и в дБ регистрируется более 3000 вызовов в день.
Я немного беспокоюсь о том, насколько сильно это отношение влияет на производительность запросов.Если использование inner join в таблице с более чем несколькими миллионами строк (Events) приведет к значительному снижению производительности, я мог бы добавить поле CallerId в таблицу Events, не используя объединения (хотя япотеряет некоторую другую информацию в связанной таблице Calls).

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

1 Ответ

3 голосов
/ 09 января 2012

Это зависит от того, насколько ширина ваши столы.

На самом деле - 3000 звонков в день - не такие большие данные, по крайней мере, за первые десять лет 8 -)

но

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

Шаги:

  • проверить правильность индексации (по крайней мере, индекс для соединенных (и запрашиваемых) столбцов
  • проверьте ваши запросы - они приносят вам данные, которые вы хотите? единственные данные, которые вы хотите?
...