Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Индекс с IN / 11 сообщений из 11, страница 1 из 1
30.11.2014, 04:54
    #38820520
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
А это нормально что при наличии индекса по полям A,B,C и условии
A=x and B=y and C in (v1, v2)
индекс не используется ?
...
Рейтинг: 0 / 0
30.11.2014, 05:22
    #38820523
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
Нет. Должен использовать (по первым 2 сегментам).

Воспроизводится?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.11.2014, 05:43
    #38820524
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
asviridenkov,

DDL индекса?
...
Рейтинг: 0 / 0
30.11.2014, 10:17
    #38820550
Exteris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
Проверил. Используется.
...
Рейтинг: 0 / 0
02.12.2014, 01:55
    #38822088
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
kdvasviridenkov,

DDL индекса?

CREATE INDEX TICKETS_IDX2 ON TICKETS (PERFORMER_ID, PARENT_ID, STATE_ID);

Не, там конечно есть еще индекс на PERFORMER_ID, PARENT_ID но почему этот не используется если в IN всего два значения.
При разложении вручную через OR (всех условий) все отлично работает, но это же маразм
...
Рейтинг: 0 / 0
02.12.2014, 02:06
    #38822091
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
asviridenkov,

осталось теперь сопоставить PERFORMER_ID, PARENT_ID, STATE_ID и A, B, C из первого поста.

asviridenkovно почему этот не используется если в IN всего два значения.
на бумажке нарисуй значения таблицы, штук 5 столбцов. А потом подумай, как можно использовать индекс по этим данным и условию поиска.

asviridenkovПри разложении вручную через OR (всех условий) все отлично работает, но это же маразм
это не маразм, и такой топик тут уже был (про аналогичную ситуацию). И возможно даже, топик был твой.

A=x and B=y and C in (v1, v2)
=
(A = x and B=y and C = v1)
OR
(A = x and B=y and C = v2)
...
Рейтинг: 0 / 0
02.12.2014, 03:28
    #38822102
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
asviridenkovПри разложении вручную через OR (всех условий) все отлично работает, но это же маразм
это не маразм, и такой топик тут уже был (про аналогичную ситуацию). И возможно даже, топик был твой.

A=x and B=y and C in (v1, v2)
=
(A = x and B=y and C = v1)
OR
(A = x and B=y and C = v2)[/quot]

Ну я такое разложение и имел в виду, собственно. Если его явным образом писать, индекс используется и запрос работает на порядок быстрее
...
Рейтинг: 0 / 0
02.12.2014, 04:08
    #38822106
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
asviridenkov,

насколько я помню тот топик, оптимизатор так разложить не может.
...
Рейтинг: 0 / 0
02.12.2014, 04:09
    #38822107
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
asviridenkov,

а индекса по столбцам A и B не хватает? прямо так сильно надо, чтобы и C использовался?
...
Рейтинг: 0 / 0
02.12.2014, 11:00
    #38822277
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
kdvasviridenkov,

а индекса по столбцам A и B не хватает? прямо так сильно надо, чтобы и C использовался?

Прям так сильно, да. 15мс против 250. Есть разница?

Суть в том, что распределение по значениям С очень неравномерное, 0 и 1 мало, а 2 много. И интересуют именно 0 и 1.
...
Рейтинг: 0 / 0
02.12.2014, 13:07
    #38822500
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс с IN
asviridenkov,

Гы! введи индекс по выражению (c<2)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Индекс с IN / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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