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

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

23.11.2024 2:59


10.07.2006 13:45
А так?

SELECT card_type,
name,
receipt_amount,
classif,
modificator
FROM disc_std2perscard
WHERE card_code = '365001734' and type = 0
OR
card_code between substring('365001734',1,1)
and '365001734'
and type = 1
order by type, card_code desc;
10.07.2006 13:53
А так работает неправильно. Выдал 3 записи. Зато время 0,31 секунда
10.07.2006 16:09
по идее достаточно создать новый индекс
Код:
alter table disc_std2perscard add index foo (type, card_code desc)
. однако в силу ограничений индексов, они всегда хранятся как asc, поэтому без адаптации кода, который сможет работать с запросом
Код:
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 в конце) не обойтись. если время работы такого запроса вас устроит, то можно поправить и код. соответственно в ближайшей версии выдет.

то есть:
создайте индекс
дайте запрос без desc
сообщите время
10.07.2006 17:32
А что если так?
Код:
SELECT card_type,
name,
receipt_amount,
classif,
modificator
FROM disc_std2perscard
WHERE card_code = '365001734' and type = 0
OR
card_code between '365001734'
and concat('365001734','zzzzzzzzzz')
and type = 1
order by type, card_code desc;
10.07.2006 17:39
Цитата:
shebdim по идее достаточно создать новый индекс
Код:
alter table disc_std2perscard add index foo (type, card_code desc)
. однако в силу ограничений индексов, они всегда хранятся как asc, поэтому без адаптации кода, который сможет работать с запросом
Код:
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 в конце) не обойтись. если время работы такого запроса вас устроит, то можно поправить и код. соответственно в ближайшей версии выдет.

то есть:
создайте индекс
дайте запрос без desc
сообщите время
Индекс создавать пробовали, правда без desc. Индекс данным запросом не используется вообще.
10.07.2006 17:41
Цитата:
olegon А что если так?
Код:
SELECT card_type,
name,
receipt_amount,
classif,
modificator
FROM disc_std2perscard
WHERE card_code = '365001734' and type = 0
OR
card_code between '365001734'
and concat('365001734','zzzzzzzzzz')
and type = 1
order by type, card_code desc;
Работает. 0,12 секунды. на 32Мб. Как бы УКМ4 быстро поменять?
10.07.2006 17:49
Результат верный? А то у нас с shebdim тут разногласия *05
10.07.2006 17:52
Проверила и для карты и для префикса. Выдает 1 запись. Вроде верно.
10.07.2006 17:54
Цитата:
shebdim по идее достаточно создать новый индекс
Код:
alter table disc_std2perscard add index foo (type, card_code desc)
. однако в силу ограничений индексов, они всегда хранятся как asc, поэтому без адаптации кода, который сможет работать с запросом
Код:
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 в конце) не обойтись. если время работы такого запроса вас устроит, то можно поправить и код. соответственно в ближайшей версии выдет.

то есть:
создайте индекс
дайте запрос без desc
сообщите время
0,30 сек. То есть в 100 раз быстрее.
10.07.2006 17:56
Цитата:
Mtirt Индекс создавать пробовали, правда без desc. Индекс данным запросом не используется вообще.
новый индекс может использоваться только в том случае, когда запрос выполняется без обратной сортировки.

тот запрос который вы просите вставить в код содержит ошибку, хотя и работает очень быстро.
Часовой пояс GMT +3, время: 02:59.

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