Должен ли я разделить свой стол вертикально?


У меня есть такая таблица:

  • ~200 тысяч строк (ожидается, что они вырастут примерно до миллиона)
  • около 40 столбцов (может немного вырасти)

Первые 20 столбцов используются всеми строками, но остальные 20 столбцов используются только около 2% строк, а для остальных-null. Запросы выполняются в основном по первым столбцам.

Мой вопрос заключается в том, имеет ли он какие-либо преимущества в производительности (или какие-либо практические преимущества/недостатки), чтобы разделить их в виде отдельной таблицы с 1:1 отношения. Столбцы представляют собой смесь дат, целых чисел и коротких строк. Он будет работать на SQL Azure и im с помощью ORM.

1 2

1 ответ:

Ну, это зависит. С точки зрения механизма хранения данных, разбиение таблицы даст вам меньшие строки в основной таблице, больше строк на одной странице, больше данных, прочитанных за один раз, и, вероятно, лучший perf в результате. Но это во многом зависит от того, присоединится ли большинство ваших запросов к подтаблице или нет. Вы должны протестировать оба подхода, конечно, а также принять во внимание функцию разреженных столбцов (https://msdn.microsoft.com/en-us/library/cc280604.aspx).