[ТЕМА ЗАКРЫТА]
Опции темы
10.07.2006 13:45  
OlegON
А так?

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  
Mtirt
А так работает неправильно. Выдал 3 записи. Зато время 0,31 секунда
 
10.07.2006 16:09  
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
сообщите время
 
10.07.2006 17:32  
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;
 
10.07.2006 17:39  
Mtirt
Цитата:
Сообщение от 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  
Mtirt
Цитата:
Сообщение от 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  
OlegON
Результат верный? А то у нас с shebdim тут разногласия *05
 
10.07.2006 17:52  
Mtirt
Проверила и для карты и для префикса. Выдает 1 запись. Вроде верно.
 
10.07.2006 17:54  
Mtirt
Цитата:
Сообщение от 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  
shebdim
Цитата:
Сообщение от Mtirt
Индекс создавать пробовали, правда без desc. Индекс данным запросом не используется вообще.
новый индекс может использоваться только в том случае, когда запрос выполняется без обратной сортировки.

тот запрос который вы просите вставить в код содержит ошибку, хотя и работает очень быстро.
 
 


Опции темы



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

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