powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Непонятки с оптимизатором 2.5.3
9 сообщений из 59, страница 3 из 3
Непонятки с оптимизатором 2.5.3
    #38387843
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамС чего это? Просто её выгоднее пустить по одному плану, а не по другому.
Это не совсем разворачивание, а просто подсчёт селективности сегментов.

Всё понеслось вот с этого ответа. Я ведь сначала даже поинтересовался у ТС селективностью сегментов.

dimitrГаджимурадов РустамДЕ, оптимизатор такие обманы пока не умеет замечать?
смотря что ты считаешь обманом :-) Второй вариант абсолютно понятен оптимизатору, а первый "обман" - нет. Один и тот же предикат нельзя использовать для двух индексных выборок, отсюда и результат в первом посте. Уверен что во всех версиях ФБ план будет такой же, т.е. используется лишь первый сегмент. А развернуть свернутую бинарную логику оптимизатор не умеет.
...
Рейтинг: 0 / 0
Непонятки с оптимизатором 2.5.3
    #38387905
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

Спасибо!!!!

зы. Для себя я понял что в принципе всё в порядке.
и заставлять сервер использовать два раза индекс не буду :) :) :)
ибо тем самым не оставлю оптимизатору никакого выбора
тем более что (насколько я понимаю) по мере жизни базы селективность по первым сегментам
ACCOUNTCODE , ACCOUNT_PIPECODE будет ухудшаться (ибо количество их практически не изменится)
а по последнему сегменту - ENDDATE будет улучшаться
и рано или поздно наступит "счастье"
...
Рейтинг: 0 / 0
Непонятки с оптимизатором 2.5.3
    #38387917
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> по статистике прав, а как оно де-факто выйдет - ХЗ, зависит от реальных значений в полях.

Так это везде так. На этапе построения плана есть ведь только селективность.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Непонятки с оптимизатором 2.5.3
    #38387925
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> Я ведь сначала даже поинтересовался у ТС селективностью сегментов.

Так ДЕ же объяснил с конкретными цифрами.
Возможно мы по-разному понимаем понятие
разворачивания предиката - я (и ДЕ, AFAIU)
имел в виду следующее:

1. where A = :A and (B = :B1 or B = :B2) есть
сокращенный вариант развернутого
where A = :A and B = :B1 or A = :A and B = :B2.

2. Это ручной обман (подсказка) оптимизатора и
сам он такое (разворачивать предикат) не умеет.
Наверное, это можно добавить, но ХЗ насколько
это сложно и оправданно.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Непонятки с оптимизатором 2.5.3
    #38387956
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Я именно так и понял. Хотя да, из слов ДЕ оптимизатор не разворачивает выражение. Но всё равно умеет использовать индекс дважды, если если стоимость получается более низкой.

Кстати по идее с использованием гистрограмм может получится другая оценка, но вроде их использование возможно только для сравнения с константами.
...
Рейтинг: 0 / 0
Непонятки с оптимизатором 2.5.3
    #38390729
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мысль тут у меня появилась, насколько дурная не знаю

дабы не листать топик приведу исходный пост еще раз

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE ACCOUNT_STATE (
    CODE          INTEGER NOT NULL,
    ACCOUNTCODE  BIGINT NOT NULL,
    ENDDATE     DATE,
.......
);

ALTER TABLE ACCOUNT_STATE ADD CONSTRAINT PK_ACCOUNT_STATE PRIMARY KEY (CODE);

CREATE DESCENDING INDEX ACCOUNT_STATE_ACC_ED_DESC ON ACCOUNT_STATE (ACCOUNTCODE, ENDDATE);




Запрос

Код: sql
1.
2.
3.
4.
 select *
  from Account_State
  where Accountcode = :IAccount
    and (Enddate = :Idate1 or Enddate = :Idate2)



показывает план
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.....


с планами и причинами таких планов объяснили, все понятно
но вот возник вопрос в связи с выделенным текстом
Если создать уникальный индекс
ALTER TABLE ACCOUNT_STATE ADD CONSTRAINT UNQ1_ACCOUNT_STATE UNIQUE (ACCOUNTCODE, ENDDATE);
то оптимизатор выбирает план
PLAN (ACCOUNT_STATE INDEX (UNQ1_ACCOUNT_STATE, UNQ1_ACCOUNT_STATE))

ну собственно сам вопрос, а может можно оптимизатор научить смотреть еще на статистику PK,
ну и надо ли его этому учить ???

ps/ Я прекрасно понимаю что сам себе буратино и в моём случае надо было самому указывать
что индекс уникальный, однако могут быть случае когда индекс все-же не уникальный но
"дублирование" совсем мизерное
...
Рейтинг: 0 / 0
Непонятки с оптимизатором 2.5.3
    #38390863
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

статистика для ПК принимается упрощенной, т.е. стоимость индексного скана = 2 и стоимость чтения записи = 1. Так специально сделано, ибо не генерить кривые планы при устаревшей статистике.
...
Рейтинг: 0 / 0
Непонятки с оптимизатором 2.5.3
    #38390911
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrm7m,

статистика для ПК принимается упрощенной, т.е. стоимость индексного скана = 2 и стоимость чтения записи = 1. Так специально сделано, ибо не генерить кривые планы при устаревшей статистике.

Я так понимаю что и для уникального индекса аналогично???
...
Рейтинг: 0 / 0
Непонятки с оптимизатором 2.5.3
    #38390912
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

да, на самом деле выше я имел ввиду именно уникальный индекс
...
Рейтинг: 0 / 0
9 сообщений из 59, страница 3 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Непонятки с оптимизатором 2.5.3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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