[ТЕМА ЗАКРЫТА]
Опции темы
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, время: 12:09.

Все в прочитанное - Донат - RSS - - Карта - Вверх

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