|
|
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
сервер LI-V6.3.3.26655 Firebird 2.5 клиент 2.5.1.26351 IBExpert Есть таблица (лишние поля убрал) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Запрос Код: sql 1. 2. 3. 4. показывает план PLAN (ACCOUNT_STATE INDEX (ACCOUNT_STATE_ACC_ED_DESC)) что для меня несколько неожиданно ибо я ожидал PLAN (ACCOUNT_STATE INDEX (ACCOUNT_STATE_ACC_ED_DESC, ACCOUNT_STATE_ACC_ED_DESC)) Хочется узнать почему мои ожидания не оправдались. (И небольшое уточнение вопрос не про обходные пути) зы. записей в таблице 268773 Статистика для обоих индексов 0,000003720611..... Если нужна еще какая либо информация с удовольствием предоствлю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:11:19 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7m, на другой версии было иначе? m7m Код: sql 1. М? Так, теоретизирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:15:24 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7m, 1. (Enddate = :Idate1 or Enddate = :Idate2) вырубает использование индекса (если бы он был только по Enddate) 2. Даже если бы там не было выражения, то с чего ты решил что индекс должен задействоваться дважды? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:18:29 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
Симонов Денис> 1. (Enddate = :Idate1 or Enddate = :Idate2) вырубает Симонов Денис> использование индекса (если бы он был только по Enddate) Ну здрасьте, приехали... Ты чего? :) Если сложный предикат, а индекс составной - да, наверное, возможны нюансы, но не в таком простом кейсе. P.S. Топик не читал. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:21:50 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
wadmanm7m, на другой версии было иначе? Именно этот запрос - без понятия, у меня к сожалению сейчас нет возможности проверить на другой версии Однако аналогичный запрос на другой таблице (только индекс там трех сегментный) работает ожидаемо для меня (т.е. в плане дважды упоминается индекс) wadmanm7m Код: sql 1. М? Так, теоретизирую. нет, никакие манипуляции с индексом, (asc, desc, добавление нового сегмента) не привели к ожидаемым мною результатам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:23:15 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
По сабжу - на первое поле индекса нет никаких доп.ограничений, уникальности? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:23:56 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, тьфу блин. Перепутал с другим случаем когда field = :param1 or param1 is null. Думаю что в этом случае оптимизатор решил что выгодней использовать только часть составного индекса. Тут для отвта нужны сведения по селективности отдельных сегментов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:25:45 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7mЕсли нужна еще какая либо информация с удовольствием предоставлю план на 2.5.2 не помешает. И на 2.5.0 заодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:28:35 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7mСтатистика для обоих индексов 0,000003720611..... ты забыл, что 2.5 анализирует селективность по всем сегментам композитного индекса, которая может быть хуже, чем суммарная селективность композита. Раньше композиты были вредны именно этим. Возможно, что по второму сегменту селективность плохая, и поэтому оптимизатор решил не париться, два раза сканируя весь индекс, а потом объединяя битмапы по OR, а просто отобрать записи по первому сегменту, причем один раз. В принципе, я бы и от предыдущих оптимизаторов ожидал подобного поведения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:29:54 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
dimitrm7mЕсли нужна еще какая либо информация с удовольствием предоставлю план на 2.5.2 не помешает. И на 2.5.0 заодно. Немного проблематично :( (постараюсь завтра-послезавтра) и еще одно уточнение запрос Код: sql 1. 2. 3. 4. работает ожидаемо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:34:23 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7m, Выполни следующий запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Результат выложи сюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:41:51 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7m> работает ожидаемо Забавненько. ДЕ, оптимизатор такие обманы пока не умеет замечать? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:52:41 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7m, кол-во индексных чтений и записей в результате отличаются ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:54:10 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамДЕ, оптимизатор такие обманы пока не умеет замечать? смотря что ты считаешь обманом :-) Второй вариант абсолютно понятен оптимизатору, а первый "обман" - нет. Один и тот же предикат нельзя использовать для двух индексных выборок, отсюда и результат в первом посте. Уверен что во всех версиях ФБ план будет такой же, т.е. используется лишь первый сегмент. А развернуть свернутую бинарную логику оптимизатор не умеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 15:59:15 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
hvladm7m, кол-во индексных чтений и записей в результате отличаются ? Да запрос Код: sql 1. 2. 3. 4. возвращает 0 записей 16 индексных чтений запрос Код: sql 1. 2. 3. 4. возвращает 0 записей 0 индексных чтений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:11:18 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
Симонов Денисm7m, Выполни следующий запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Результат выложи сюда Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:20:56 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7m, после поста dimitr 14794983 всё уже понятно. Может быть в трёшке оптимизатор будет умнее в таких случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:31:30 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
dimitrГаджимурадов РустамДЕ, оптимизатор такие обманы пока не умеет замечать? смотря что ты считаешь обманом :-) Второй вариант абсолютно понятен оптимизатору, а первый "обман" - нет. Один и тот же предикат нельзя использовать для двух индексных выборок, отсюда и результат в первом посте. Уверен что во всех версиях ФБ план будет такой же, т.е. используется лишь первый сегмент. А развернуть свернутую бинарную логику оптимизатор не умеет. Ну вот немного другая ситуация Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. запрос Код: sql 1. 2. 3. 4. 5. PLAN (ACCOUNT_SERVICE INDEX (ACCOUNT_SERVICE_ACC_ENDDATE, ACCOUNT_SERVICE_ACC_ENDDATE)) и получается что развернуть свернутую бинарную логику оптимизатор умеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:33:30 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
Симонов Денисm7m, после поста dimitr 14794983 всё уже понятно. Может быть в трёшке оптимизатор будет умнее в таких случаях. ну оно вроде так, однако 14795294 практически тоже (ну другая таблица, ну три сегмента, но оптимизатор разобрался) и если-бы он здесь не разобрался то исходный вопрос не поднимался бы (хронологически сначала был разбор полетов с запросом 14795294 , а потом с 14794643 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:41:10 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7m, Это не тоже самое. Здесь у тебя оптимизатор выбрал план по отдельным сегментам индекса ACCOUNT_SERVICE_ACC_ENDDATE один для поля ACCOUNTCODE, второй - ACCOUNT_PIPECODE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:42:39 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
dimitr, а в трёшке в плане будет как-нибудь отражено какой именно сегмент индекса был выбран в таких случаях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:44:06 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, да, будет (в расширенном плане) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:51:08 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
Симонов Денисm7m, Это не тоже самое. Здесь у тебя оптимизатор выбрал план по отдельным сегментам индекса ACCOUNT_SERVICE_ACC_ENDDATE один для поля ACCOUNTCODE, второй - ACCOUNT_PIPECODE какое тогда будет объяснение для Код: sql 1. 2. 3. 4. 5. PLAN (ACCOUNT_SERVICE INDEX (ACCOUNT_SERVICE_ACC_ENDDATE)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:54:32 |
|
||
|
Непонятки с оптимизатором 2.5.3
|
|||
|---|---|---|---|
|
#18+
m7m, ну а здесь всё понятно оптимизатор выбрал индекс целиком, а не по сегментам (раскрывать ничего не потребовалось) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:56:13 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38386773&tid=1564343]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
209ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
| others: | 193ms |
| total: | 538ms |

| 0 / 0 |
