2013-08-31 2 views
0

У меня есть база данных sql, которая была передана мне, которая началась как приложение доступа. С тех пор его развилось много. Предыдущий разработчик хранил дополнительные столбцы в таблице вместо разделения таблиц, и мы начинаем сообщать об этих данных (более 1 м строк), и производительность начинает перетаскивать некоторые запросы.Sql производительность больше столбцов или больше таблиц для отчетности

Один стол для компании и содержит имя, ссылку, адресные данные, финансовые детали, страхование и т.д.

Я имею в виду, что мы должны разбить таблицу и иметь tblcompany, tbladdress, tblfinance и т.д. С нашей отчетности позволяет пользователям сообщать о любых полях, которые они хотят. Я думаю, что было бы лучше внутреннее соединение tbladdress, если пользователь хочет сообщить о реквизитах адреса, то же самое для финансов, страхования и т. Д. Также некоторые компании могут не иметь каких-либо финансовых данных, так что смысл иметь много нулевых полей?

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

Так что мой вопрос: улучшит ли производительность? Я думаю, что дизайн мудрый, это то, что нужно сделать, но хотелось, чтобы все советы, трюки и мнения.

+0

Добро пожаловать на переполнение стека. Обратите внимание, что вопросы, требующие «подсказок, трюков и мнений», скорее всего, будут закрыты: этот сайт предназначен для конкретных вопросов программирования, которые могут иметь окончательные ответы. Подробнее см. Http://stackoverflow.com/questions/how-to-ask. –

ответ

0

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

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

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

+0

Я хотел бы улучшить производительность отчетности. Множество запросов, которые мы делаем сейчас, похоже, требуют времени. Эффективность сохранения данных имеет меньшее значение, чем отчетность по данным. На самом деле у нас есть 200 + копий этой настройки базы данных (1 для каждого клиента), поэтому не уверен, что для каждой отдельной базы данных будет опция – Gillardo

+0

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

+0

@ user2736022, читайте в [Инструментарий хранилищ данных: окончательное руководство по размерному моделированию] (http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/data-warehouse-dw -Инструментарий/). Первые несколько глав могут дать вам очень хорошее представление о том, что вам нужно здесь, даже если вы не можете/не будете внедрять модель данных измерений. По словам Тони, оптимизация запросов один за другим может оказаться недостаточно эффективной. – bartover

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