Один большой стол или разделить на два меньших стола? - PullRequest
1 голос
/ 07 сентября 2011

Есть ли выигрыш в производительности, если разбить большую таблицу с примерно 100 столбцами на две отдельные таблицы?Это было бы с точки зрения вставки, удаления и выбора задач?Я использую SQL Server 2008.

Ответы [ 4 ]

1 голос
/ 07 сентября 2011

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

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

Можете ли вы описать, какой тип сущности должен иметь более 100 столбцов?Возможно, модель данных в первую очередь неверна.

1 голос
/ 07 сентября 2011

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

Но просто возвращение 100 регулярных полей, вероятно, не обременит вашей системе так сильно, как оправдание отдельной таблицы и объединения.

0 голосов
/ 07 сентября 2011

Я зависит, если вы одновременно используете эти поля в своем приложении.

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

Если у вас нет проблем с производительностью, ничего не делайте, вы увидите позже!

0 голосов
/ 07 сентября 2011

Я бы сказал "нет", так как для соединения двух таблиц потребуется больше времени, когда вы захотите что-то сделать.

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