powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрос не использует индекс - 2
10 сообщений из 10, страница 1 из 1
Запрос не использует индекс - 2
    #38612309
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть 2 таблички, связанные по ФК:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE ORA (
    ID               DM_ID NOT NULL /* DM_ID = INTEGER NOT NULL */,
    CH_ID);

CREATE TABLE ORB (
    ID         DM_ID NOT NULL /* DM_ID = INTEGER NOT NULL */,
    ORA_ID     DM_ID /* DM_ID = INTEGER NOT NULL */);

ALTER TABLE ORB ADD CONSTRAINT FK_ORB_1 FOREIGN KEY (ORA_ID) REFERENCES ORA (ID) ON DELETE CASCADE;



делаю запрос
Код: sql
1.
2.
3.
4.
select a.id
from ora a
join orb b on b.ora_id = a.id
where a.ch_id = :ch_id



все отлично:планPLAN JOIN (A INDEX (FK_ORA_1), B INDEX (FK_ORB_1))

добавляю джойн той же таблицы с тем же ключом
Код: sql
1.
2.
3.
4.
5.
select a.id
from ora a
join orb b on b.ora_id = a.id
join orb bb on bb.ora_id = a.id
where a.ch_id = :ch_id


получаю план 2PLAN JOIN (B NATURAL, A INDEX (PK_ORA), BB INDEX (FK_ORB_1))


почему первый джойн перестает использовать индекс?

селективность FK_ORB_1 0,00044964 ...

Firebird-2.5.2.26540_0_Win32
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38612314
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри
Код: sql
1.
CH_ID            DM_ID /* DM_ID = INTEGER NOT NULL */


ссылка на родительскую таблицу, тут роли не играет...
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38612942
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для начала хочется увидеть число записей во всех таблицах и селективность всех используемых индексов...
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38613021
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORA записей 165000
ORB записей 262000

ORA.ID 0,0000060481434
ORB.ORA_ID 0,00044964028
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38613141
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вобщем, проблема решилась после б/р

планPLAN JOIN (A INDEX (FK_ORA_1), B INDEX (FK_ORB_1), BB INDEX (FK_ORB_1))
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38613145
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvbORB записей 262000
...
ORB.ORA_ID 0,00044964028Однозначно левая селективность
mvbвобщем, проблема решилась после б/рА достаточно было только обновить статистику по ORB.ORA_ID
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38613155
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Перед б/р пересчитал и проверил запрос, план был такой же кривой, возможно надо было переконнектиться
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38613204
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvb,

вообще-то я там выше промазал с селективностью - подумал, что это индекс на свой ID, а это же FK на другую таблицу.
А какая селективность у него после рестора ?
Не менялась ли ОДС в результате рестора ?
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38613285
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у поля с ФК сейчас 0,000006048728664
ОДС не менялась..
...
Рейтинг: 0 / 0
Запрос не использует индекс - 2
    #38613293
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvbORB.ORA_ID 0,00044964028
mvbу поля с ФК сейчас 0,000006048728664
Значит я всё же не ошибался насчёт селективности
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запрос не использует индекс - 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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