Решить, если я должен разделить стол - PullRequest
3 голосов
/ 24 августа 2009

Я создаю многоязычный сайт

У меня есть таблица описаний, в которой содержится описание каждого продукта, и столбец с указанием языка. Таким образом, он содержит строку для каждого описания языка

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

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

Принесет ли это мне какой-нибудь прирост производительности на Microsoft SQL?

Ответы [ 5 ]

7 голосов
/ 24 августа 2009

Для практических целей нет. Если ваша таблица правильно проиндексирована, то вы не увидите никакой разницы.

Не оптимизируйте структуру базы данных преждевременно.

4 голосов
/ 24 августа 2009

Сколько продуктов вы говорите? Потому что, если это менее 10 миллионов, даже не пытайтесь оптимизировать его таким образом.

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

Если то, что вы делаете, - это много операций чтения, мало записей о том, что от такого разделения не будет никакой выгоды.

Не оптимизируйте проблему, пока не возникнет проблема.

0 голосов
/ 24 августа 2009

Согласовано - я предпочитаю решать проблемы, которые являются актуальными проблемами.

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

0 голосов
/ 24 августа 2009

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

Итак, я бы порекомендовал вам использовать отдельные таблицы.

0 голосов
/ 24 августа 2009

Я рекомендую проверить эти две вещи:

  • Правильно ли проиндексирована ваша таблица? Если нет, индексируйте его.
  • Вы видите здесь проблему с производительностью (при условии правильной индексации)?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...