|
![]() |
#1 |
Member
|
Итак...
Чтобы сберечь нервы я комментирую неэффективный код с джоином. Отталкиваюсь от 4,000 записей ======================= 1.08 - время вставки 4001 - результат выборки 0.17 - время выборки вложенным циклом Ну ка 40,000 записей ======================= 11.77 - время вставки 40001 - результат выборки 4.58 - время выборки вложенным циклом Время выборки начало расти быстрее. Время выборки выросло в 25 раз против 10 кратного роста количества записей в таблицах. Вероятно все-таки на больших объемах производительност ьвременных раблиц еще снижается за счет чего-то. Если у кого-то хватит нервов — попробуйте посмотреть что на 40,000 выдаст джоин ![]()
__________________
С уважением, glibs® |
|
![]() |
#2 |
Member
|
Мне это напоминает анекдот, когда у армянского радио спрашивают можно ли посреди центральной площади города изнасиловать женщину...
__________________
С уважением, glibs® |
|
![]() |
#3 |
Member
|
Но это еще не все...
Я уже много лет все думал на что же влияют индексы во временных таблицах.
Используются ли они для поиска данных? Или только для контроля уникальности ключа? Или вообще не используются? У таблицы TmpAccountSum в стандартной поставке есть один индекс. Первым полем там идет AccountNum, а дальше еще несколько полей, но это не важно. Делаю ему Enanbled = "No" (т.е. отключаю). На 40,000 записей ============== Не дождался. Спать хочу. Время вставки было 9.03 Вернусь на 4,000 записей ==================== Было: 1.08 - время вставки 4001 - результат выборки 0.17 - время выборки вложенным циклом Стало: 0.86 - Вставка убыстрилась. То, что наличие индекса на таблице увеличивает время вставки, характерно для реляционных и индексно-последовательных баз данных. Временные таблицы тут не выделяются из общей тенденции. 4001 - Дождался ![]() 129.63 - Что-то мне это напоминает... кажется на результат джоина похоже ![]() В общем, индексы на временной таблице: а) не фикция б) ускоряют доступ к данным как и в клссических СУБД в) почему-то не используются при джоинах
__________________
С уважением, glibs® |
|
![]() |
#4 |
Member
|
Общий вывод
На временных таблицах джоины использовать не стоит. Лучше заменять их вложенными циклами.
Временные таблицы индексировать нужно. Но как и в случае с обычными таблицами делать это нужно грамотно и со знанием дела. Спасибо тем кто дождался конца моего спича. Теперь буду рад вашим комментариям. Особенноесли вы тоже нароете что-то полезное.
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: macklakov (9), raz (15), Pustik (5), AlexeyS (2), lev (12), Roman777 (2), gl00mie (12), Stitch_MS (3). |
Теги |
временная таблица, оптимизация, полезное, производительность |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|