[ОТВЕТИТЬ]
Опции темы
01.03.2007 17:34  
Михаил
Собственно нам пожаловались, что если на закладке Аналитика в фильтре карточек задать поставщика и выполнить по всем товарам, то очень долго приходится ждать результата.

Оговорюсь сразу, что та же база стоит и у нас и мы можем протестировать все это у себя. По крайней мере у нас эта база (~50 Гб) в приличном состоянии, у клиента версия СМ 1.024.5 SP5.
У нас 1.24.6 sp3.

TOAD виснет над той же выборкой минут 30, а Супермаг не справился и за полтора часа. Стало оч. интересно, что же там СМ такое делает?
Вывели запрос:
SELECT tmain.article, tmain.name, tmain.accepted, tmain.datatype,
tmain.datasubtype, tmain.scaleload, tmain.cashload, tmain.receiptok,
tmain.cardcomment
FROM supermag.smcard tmain
WHERE EXISTS (SELECT /*+ INDEX (s smspec_art) */ *
FROM supermag.smdocuments d, supermag.smspec s
WHERE s.doctype = d.doctype
AND s.docid = d.id
AND s.doctype = 'WI'
AND d.opcode = 0
AND s.article = tmain.article
AND d.docstate IN (2, 3)
AND d.clientindex = 284)
ORDER BY tmain.article

Вроде небольшой запрос, но вот оператор EXISTS настораживает...

Просто немного переписали запрос...

SELECT tmain.article, tmain.name, tmain.accepted, tmain.datatype,
tmain.datasubtype, tmain.scaleload, tmain.cashload, tmain.receiptok,
tmain.cardcomment
FROM supermag.smcard tmain
WHERE tmain.article in (SELECT /*+ INDEX (s smspec_art) */ s.article
FROM supermag.smdocuments d, supermag.smspec s
WHERE s.doctype = d.doctype
AND s.docid = d.id
AND s.doctype = 'WI'
AND d.opcode = 0
AND s.article = tmain.article
AND d.docstate IN (2, 3)
AND d.clientindex = 284)
ORDER BY tmain.article

Не успели моргнуть и глазом, а результат выполнения уже на экране.
Причем тот же.
 
01.03.2007 18:24  
OlegON
Не посмотрел сразу, запросы разные. Логику поменял. А за счет сужения выборки увеличивается скорость. Только не у всех одинаково твоя поправка сработает. Если хвост с подсказкой выдаст большое количество записей, то твой запрос ляжет намертво, а оригинальный нет. Это при первом присмотре.
Давай лучше разберемся, почему у тебя первый запрос тормозит? У меня база гигов на 7, на буке, запрос выполняется секунд за 5. План давай.
 
02.03.2007 05:45  
sevushka
Проверил ради интереса у себя. База 15 гиг, карточек 30000. Супермаг 1.024.5.5. Запрос выполняется пусть не как у Олегона за 5 сек, но меньше минуты точно. (20-50 секунд, в зависимости от поставщика).
 
02.03.2007 07:07  
reddevil
Цитата:
Сообщение от olegon
Если хвост с подсказкой выдаст большое количество записей, то твой запрос ляжет намертво
Ничего с ним не случиться ибо хвост при всем желании не вернет больше записей чем в самой SMCARD
 
02.03.2007 08:33  
OlegON
Цитата:
Сообщение от reddevil
Цитата:
Сообщение от olegon
Если хвост с подсказкой выдаст большое количество записей, то твой запрос ляжет намертво
Ничего с ним не случиться ибо хвост при всем желании не вернет больше записей чем в самой SMCARD
Этого мало? Реальный пример - 600000 карточек. Думаю, протормозит конкретно так.
Изображения
Тип файла: jpg log_2805.jpg (37.4 Кб, 725 просмотров)
Тип файла: jpg log_2805.jpg (37.4 Кб, 725 просмотров)
 
02.03.2007 12:10  
kadr
Для сравнения:
Оригинальный запрос отработал за 264 секунды, отобрал 136 строк, карточек 100 000. База переживает не самые лучшие времена, размер без ТЕМПов 101 Гб
 
 
Опции темы



Часовой пояс GMT +3, время: 11:13.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.