Форум OlegON > Программы и оборудование для автоматизации торговли > Кассовые программы > УКМ-4

Дисконтные карты (очень долгий поиск) : УКМ-4

02.05.2024 5:05


07.07.2006 09:27
Mtirt
 
Так сложилось, что в базе данных достаточно много дисконтных карт (около 200 000). УКМ4 достаточно долго осуществляет поиск дисконтных карт. Может кто-то сталкивался с подобной проблемой? Какие пути решения вы можете предложить?
10.07.2006 11:46
junior
 
Конфигурация кассы p166/32mb/20Gb

SELECT card_type, name, receipt_amount, classif, modificator FROM disc_std2perscard WHERE (card_code = '365001734' and type = 0) OR ('365001734' like concat(card_code, '%') and type = 1) order by type, card_code desc;

Время выполнения 29-35 секунд.
10.07.2006 12:10
OlegON
 
А если optimize table сделать?
10.07.2006 12:13
Mtirt
 
Не помогает. Делали. Карт около 200000. Пробовали и с 64Mb памяти. Скорость та же.
10.07.2006 12:26
OlegON
 
Проц или винт кладется? Извиняюсь, нет у меня базы УКМки под рукой, чтобы погонять.
10.07.2006 12:28
Mtirt
 
Винт. Просто там всегда идет полное сканирование таблицы. Из-за второго условия в запросе. И индекс никак не используется при этом.
10.07.2006 12:47
OlegON
 
А такой запрос работает? Быстрее/медленнее?
SELECT card_type, name, receipt_amount, classif, modificator
FROM disc_std2perscard
WHERE
(card_code = '365001734' and type = 0)
OR ((instr(card_code, '365001734')=1) and type = 1);
10.07.2006 13:10
Mtirt
 
В 2 раза быстрее. правда 15 секунд - это тоже много...
10.07.2006 13:16
OlegON
 
order by влияет? или только замена на instr такой эффект дает?
10.07.2006 13:20
Mtirt
 
И то, и другое, причем где-то 50/50.
Часовой пояс GMT +3, время: 05:05.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.