
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
30.11.2014, 04:54
|
|||
|---|---|---|---|
|
|||
Индекс с IN |
|||
|
#18+
А это нормально что при наличии индекса по полям A,B,C и условии A=x and B=y and C in (v1, v2) индекс не используется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2014, 05:22
|
|||
|---|---|---|---|
|
|||
Индекс с IN |
|||
|
#18+
Нет. Должен использовать (по первым 2 сегментам). Воспроизводится? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2014, 05:43
|
|||
|---|---|---|---|
Индекс с IN |
|||
|
#18+
asviridenkov, DDL индекса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2014, 10:17
|
|||
|---|---|---|---|
Индекс с IN |
|||
|
#18+
Проверил. Используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 01:55
|
|||
|---|---|---|---|
|
|||
Индекс с IN |
|||
|
#18+
kdvasviridenkov, DDL индекса? CREATE INDEX TICKETS_IDX2 ON TICKETS (PERFORMER_ID, PARENT_ID, STATE_ID); Не, там конечно есть еще индекс на PERFORMER_ID, PARENT_ID но почему этот не используется если в IN всего два значения. При разложении вручную через OR (всех условий) все отлично работает, но это же маразм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 02:06
|
|||
|---|---|---|---|
Индекс с IN |
|||
|
#18+
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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 03:28
|
|||
|---|---|---|---|
|
|||
Индекс с IN |
|||
|
#18+
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] Ну я такое разложение и имел в виду, собственно. Если его явным образом писать, индекс используется и запрос работает на порядок быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 04:08
|
|||
|---|---|---|---|
Индекс с IN |
|||
|
#18+
asviridenkov, насколько я помню тот топик, оптимизатор так разложить не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 04:09
|
|||
|---|---|---|---|
Индекс с IN |
|||
|
#18+
asviridenkov, а индекса по столбцам A и B не хватает? прямо так сильно надо, чтобы и C использовался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 11:00
|
|||
|---|---|---|---|
|
|||
Индекс с IN |
|||
|
#18+
kdvasviridenkov, а индекса по столбцам A и B не хватает? прямо так сильно надо, чтобы и C использовался? Прям так сильно, да. 15мс против 250. Есть разница? Суть в том, что распределение по значениям С очень неравномерное, 0 и 1 мало, а 2 много. И интересуют именно 0 и 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=40&mobile=1&tid=1563161]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 528ms |

| 0 / 0 |
