Показать сообщение отдельно
Старый 26.12.2011, 18:10   #37  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Так здесь обсуждается именно структура данных.
А то о чем вы говорите - тоже поможет, но это совсем из другой оперы.

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

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

После добавления поля InventLocationId в таблицу InventTrans время работы отчетов, где была связка двух таблиц InventTrans + InventDim и на InventDim условие по складу, сократилось в 10-ки раз (с ~25-30 мин до ~1-2минут)!
Объяснения этому я нашел такие (не совсем технические):
1. Системе проще искать в одной большой таблице, чем в двух больших таблицах (все таки, как мне кажется, выбрать данные из 22млн строк быстрее, чем из 28 млн строк да ещё и в разных местах хранящихся). Что я имею ввиду. Например, нам нужно выбрать данные из InventTrans за один день, по одному складу. При выполлнении запроса из InventTrans выбирались данные за этот день, по всем складам, которых было порядка двухста (200) (да использовался индекс по дате, но все равно много записей)... потом выбирались аналитики (InventDim) с указанным складом (тут записей не очень много), и затем уже на основе полученных аналитик фильтровались проводки (InventTrans). И на все эти операции SQL тратило время.
2. В те времена использовался SQL2005, и как мне объясняли при джойнах SQL собирал временную табличку по двум табличкам, на это тоже тратилось время.

После добавления поля InventLocationId в InventTrans, система стала искать записи по индексу Дата+Склад (ну там ещё компания, но мы сейчас не про неё), в одной табличке, и поэтому SQL стало тратить время только на выобрку данных из индекса...

З.Ы. возможно мои выводы ошибочны, тогда прошу меня поправить... и тогда я не понимаю, почему был такой прирост производительности
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем

Последний раз редактировалось sukhanchik; 26.12.2011 в 18:20. Причина: Орфография