SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Непонятное изменение плана
Непонятное изменение плана [сообщение #5915] Fri, 21 February 2025 17:38 Переход к следующему сообщению
pastor в настоящее время не в онлайне  pastor
Сообщений: 92
Зарегистрирован: June 2022
Географическое положение: Калуга
Member
если в ведущей таблице нет записей, то план получается сильно неоптимальный
все соединения по primary/foreign

основной фильтр - по первой таблице

так было во вьюхе
при наличии  записей в ведущей таблице - план для 1 и  2 становится одинаковым.

1. ужас-ужас
Показать скрытый текст
2. вроде норм
Показать скрытый текст
3. тоже норм, но другой
Показать скрытый текст

[Обновления: Fri, 21 February 2025 17:39]

Известить модератора

Re: Непонятное изменение плана [сообщение #5918 является ответом на сообщение #5915] Mon, 24 February 2025 09:54 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 336
Зарегистрирован: June 2022
Senior Member
DDL индексов не плохо бы увидеть.

Что это обозначает?

BILL$RETURNS br  -- 1 запись ID = -99, STATE = 80, DATE_CHANGE = '01.01.2000'

С учётом

   br.STATE = 80
   and  br.DATE_CHANGE between '20.02.2025' and '22.02.2025'

Ни одной записи в BILL$RETURNS не попадает под условие фильтрации? Или всё таки ошибка и в DATE_CHANGE другая дата
Re: Непонятное изменение плана [сообщение #5919 является ответом на сообщение #5918] Mon, 24 February 2025 09:58 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 336
Зарегистрирован: June 2022
Senior Member
Ведущая таблица в данном случае это что-то абстрактное в вашем представлении, ибо для INNER JOIN все таблицы равнозначны. Ведущая и ведомая таблица может быть в LEFT JOIN

Правильно ли я понимаю что вы имеете ввиду BILL$RETURNS? Или всё же BILL$RETURNS_POSITION?
Re: Непонятное изменение плана [сообщение #5920 является ответом на сообщение #5918] Mon, 24 February 2025 10:13 Переход к предыдущему сообщениюПереход к следующему сообщению
pastor в настоящее время не в онлайне  pastor
Сообщений: 92
Зарегистрирован: June 2022
Географическое положение: Калуга
Member
sim_84 писал(а) Mon, 24 February 2025 09:54
DDL индексов не плохо бы увидеть.

Что это обозначает?

BILL$RETURNS br  -- 1 запись ID = -99, STATE = 80, DATE_CHANGE = '01.01.2000'

С учётом

   br.STATE = 80
   and  br.DATE_CHANGE between '20.02.2025' and '22.02.2025'

Ни одной записи в BILL$RETURNS не попадает под условие фильтрации? Или всё таки ошибка и в DATE_CHANGE другая дата
1. соединения - банальные primary(совпадает с именем таблицы)/foreign (имя таблицы_имя поля)
для фильтра по BILL$RETURNS есть индекс по DATE_CHANGE

2. Да, НИ ОДНОЙ ЗАПИСИ по условию фильтрации нет. в этом и фишка первого вопроса.

ну и итогом.

одна запись на странице 16к - и кардинальность, вместе с селективностью индекса(ов) идут лесом.
Re: Непонятное изменение плана [сообщение #5921 является ответом на сообщение #5919] Mon, 24 February 2025 10:21 Переход к предыдущему сообщениюПереход к следующему сообщению
pastor в настоящее время не в онлайне  pastor
Сообщений: 92
Зарегистрирован: June 2022
Географическое положение: Калуга
Member
sim_84 писал(а) Mon, 24 February 2025 09:58
Ведущая таблица в данном случае это что-то абстрактное в вашем представлении, ибо для INNER JOIN все таблицы равнозначны. Ведущая и ведомая таблица может быть в LEFT JOIN

Правильно ли я понимаю что вы имеете ввиду BILL$RETURNS? Или всё же BILL$RETURNS_POSITION?
BILL$RETURNS
нолик, многое меняет. ведущий

в 2.5, то понятно. дело прошлое.
непонятно почему оптимизатор ТАК тупит в 5.0.1. примерное кол-во записей-то есть, хотя бы размерам индексов. можно было бы прикинуть к носу.



Re: Непонятное изменение плана [сообщение #5923 является ответом на сообщение #5921] Mon, 24 February 2025 13:20 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 336
Зарегистрирован: June 2022
Senior Member
Цитата:
Да, НИ ОДНОЙ ЗАПИСИ по условию фильтрации нет. в этом и фишка первого вопроса.
Осталось понять а сколько записей в этой таблице вообще без фильтров.

Потому что если без фильтра их там много, то оптимизатор ну никак не сможет догадаться что конкретно для этих значений параметров их там нет.

Напоминаю гистрограмм ещё не завезли.

И да, если там всего одна запись, то после любого фильтра оптимизатор будет считать что их там и осталась одна. Он от нуля перестраховывается
Re: Непонятное изменение плана [сообщение #5925 является ответом на сообщение #5923] Mon, 24 February 2025 13:52 Переход к предыдущему сообщениюПереход к следующему сообщению
pastor в настоящее время не в онлайне  pastor
Сообщений: 92
Зарегистрирован: June 2022
Географическое положение: Калуга
Member
sim_84 писал(а) Mon, 24 February 2025 13:20
Цитата:
Да, НИ ОДНОЙ ЗАПИСИ по условию фильтрации нет. в этом и фишка первого вопроса.
Осталось понять а сколько записей в этой таблице вообще без фильтров.

Потому что если без фильтра их там много, то оптимизатор ну никак не сможет догадаться что конкретно для этих значений параметров их там нет.

Напоминаю гистрограмм ещё не завезли.

И да, если там всего одна запись, то после любого фильтра оптимизатор будет считать что их там и осталась одна. Он от нуля перестраховывается
-- 1 запись ID = -99, STATE = 80, DATE_CHANGE = '01.01.2000'

если записей много (на несколько страниц), то как-то догадывается, даже если по условию ничего не попадает

[Обновления: Mon, 24 February 2025 13:59]

Известить модератора

Re: Непонятное изменение плана [сообщение #5926 является ответом на сообщение #5925] Mon, 24 February 2025 14:50 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 336
Зарегистрирован: June 2022
Senior Member
И всё же для полноты картины индексы для  STATE и DATE_CHANGE есть? Простые или составной?
Re: Непонятное изменение плана [сообщение #5929 является ответом на сообщение #5926] Mon, 24 February 2025 15:43 Переход к предыдущему сообщению
pastor в настоящее время не в онлайне  pastor
Сообщений: 92
Зарегистрирован: June 2022
Географическое положение: Калуга
Member
sim_84 писал(а) Mon, 24 February 2025 14:50
И всё же для полноты картины индексы для  STATE и DATE_CHANGE есть? Простые или составной?
Цитата:
для фильтра по BILL$RETURNS есть индекс по DATE_CHANGE
одно поле.
где надо - подхватывается

[Обновления: Mon, 24 February 2025 15:44]

Известить модератора

Предыдущая тема: Калькулятор Конфигураций для Firebird
Следующая тема: Ненужные сканы записей при rows
Переход к форуму:
  


Текущее время: Mon Feb 24 20:41:16 GMT+3 2025

Общее время, затраченное на создание страницы: 0.01040 секунд