Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Еще раз Like / 22 сообщений из 22, страница 1 из 1
12.03.2004, 13:59
    #32439955
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
Я уже раз описывал проблемку, но разумного решения мне ее так и не предложили:(

имеется запрос
select e_code from e164 where '380512111' like e_code || '%';
либо (разницы в скорости никакой)
select e_code from e164 where '380512111' starting with e_code;

при его выполнении индексы не используются. что можно сделать в этой ситуации?
...
Рейтинг: 0 / 0
12.03.2004, 14:12
    #32439984
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
Может имелось в виду
select e_code from e164 where e_code like '380512111%';
и
select e_code from e164 where e_code starting with '380512111';
???

...
Рейтинг: 0 / 0
12.03.2004, 14:15
    #32439988
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
2 Johnmen

если бы это имелось в виду, то так и писалось бы
просто
select e_code from e164 where e_code starting with '380512111';
вернет
NULL
а
select e_code from e164 where '380512111' starting with e_code;
3
380
...
...
Рейтинг: 0 / 0
12.03.2004, 14:34
    #32440039
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
авторselect e_code from e164 where e_code starting with '380512111';
вернет
NULL
а
select e_code from e164 where '380512111' starting with e_code;
3
380
...

Ух-ты !!! А может все как раз наоборот, а ?

Первый раз вижу конструкцию :
Код: plaintext
SELECT ... WHERE '380512111' STARTING WITH e_code


Best regards,
Dnico.
...
Рейтинг: 0 / 0
12.03.2004, 14:41
    #32440060
Andrey_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
vitvshпри его выполнении индексы не используются. что можно сделать в этой ситуации?
1. Не использовать такой запрос.
2. Смирится.
...
Рейтинг: 0 / 0
12.03.2004, 15:46
    #32440265
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
2 Dnico
не наоборот. посмотри

2 all
а все-таки, как запрос лучше перестроить?
...
Рейтинг: 0 / 0
12.03.2004, 15:57
    #32440294
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
А первого символа константы не достаточно? (просто интересуюсь)
Или нескольких?
  Типа так:
Код: plaintext
1.
2.
3.
4.
select e_code from e164 where e_code starting with '3'; 
Результат:
    3  
    380  
   ...
...
Рейтинг: 0 / 0
12.03.2004, 15:58
    #32440299
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
авторпри его выполнении индексы не используются

И не должны. И никогда не будут.
...
Рейтинг: 0 / 0
12.03.2004, 16:05
    #32440310
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
Код: plaintext
select ID from goods where '70' STARTING WITH ID

Всегда NULL, хотя ID
700
701
702
703
704
705

Что-то я не пойму ?

Best regards,
Dnico.
...
Рейтинг: 0 / 0
12.03.2004, 16:08
    #32440315
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
Поменяй местами перед с задом
...
Рейтинг: 0 / 0
12.03.2004, 16:10
    #32440319
нуар
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
наоборот... ID starting with '70' а то, что написано выбирает только ID 7 и 70
...
Рейтинг: 0 / 0
12.03.2004, 16:12
    #32440322
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
Я ведь читаю у автора ...\r
/topic/80031#575321\r
Вот так и делаю ....\r
Или у меня глюки на экране ?\r
\r
Best regards,\r
Dnico.
...
Рейтинг: 0 / 0
12.03.2004, 16:14
    #32440326
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
2 Dnico
у тебя значение ID по длине больше '70'
а в
select e_code from e164 where '380512111' starting with e_code;
e_code заведомо меньше '380512111'
...
Рейтинг: 0 / 0
12.03.2004, 16:16
    #32440329
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
Брал и 7000000000000 - не получается ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
12.03.2004, 16:19
    #32440333
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
тем не менее он работает
...
Рейтинг: 0 / 0
12.03.2004, 16:20
    #32440337
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
А версия какая сервера?

Best regards,
Dnico.
...
Рейтинг: 0 / 0
12.03.2004, 16:20
    #32440339
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
А ты пробовал то что я тебе тогда писал?
авторselect e_code from e164 where e_code starting with '3' and '380512222222' like e_code '%';

Ещё можешь попробовать поэкспериментировать и сделать так (это только теория):

select e_code from e164 where e_code between '3' and '380512222222' and '380512222222' like e_code '%';
...
Рейтинг: 0 / 0
12.03.2004, 16:29
    #32440360
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
2 Dnico
Yafiil

2 Gold
пробовал, но при том, что в таблице 4122 записей
select e_code from e164 where e_code starting with '3' and '380512222222' like e_code '%';
производит 3500 IR, то есть выигрыша почти нет
у этого IR - 500, но выполняется дольше
select e_code from e164 where e_code between '3' and '380512222222' and '380512222222' like e_code '%';
...
Рейтинг: 0 / 0
12.03.2004, 16:33
    #32440368
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
Блин !!! У меня не работает. FB стоит.


Best regards,
Dnico.
...
Рейтинг: 0 / 0
12.03.2004, 16:34
    #32440370
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
2 Gold
насчет времени я ошибся, но только если задать например вот так, то получим тоже самое, что и было по IR
select e_code from e164 where e_code between '3' and '3999999999' and '3999999999' like e_code '%';
...
Рейтинг: 0 / 0
12.03.2004, 16:37
    #32440376
vitvsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
2 Dnico
select ID from goods where '70000' STARTING WITH ID
7
70
700
.....
...
Рейтинг: 0 / 0
12.03.2004, 16:49
    #32440392
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз Like
Да !!! Понял ... это наследие 1С (все ID документов в виде ' XXX ').
Я левую часть отсекаю, а правые пробелы остаются.
Код: plaintext
select ID from goods where '700123456' starting with rtrim(ID)


Best regards,
Dnico.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Еще раз Like / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]