powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Почему не цепляется индекс при JOIN
6 сообщений из 6, страница 1 из 1
Почему не цепляется индекс при JOIN
    #34529067
Mobent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет Всем!

Создаю следующую таблицу и заполняю данными:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE test3 (
  KeyID char( 2 ),
  ToKeyID char( 2 ),
  Prm1 int4,
  Prm2 int4, 
  CONSTRAINT test_pkey PRIMARY KEY (KeyID, ToKeyID)
) 
WITHOUT OIDS;

CREATE INDEX test3_key1 ON test3
  USING btree
  (ToKeyID);

Структура данных примерно такая
А
/ \
B - C
/ \ / \
D - E - F

Нужно получить все связи второго уровня. Например для "А" - DEF , для "F" - DBA


Запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
	T2.ToKeyID 
FROM 
	test3 as T1

	INNER JOIN test3 as T2 ON 
		T2.KeyID = T1.ToKeyID

WHERE 	
	T1.KeyID = 'A'

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Hash Join  (cost= 11 . 17 .. 39 . 99  rows= 37  width= 12 )
  Hash Cond: ("outer".keyid = "inner".tokeyid)
  ->  Seq Scan on test3 t2  (cost= 0 . 00 .. 22 . 30  rows= 1230  width= 24 )
  ->  Hash  (cost= 11 . 15 .. 11 . 15  rows= 6  width= 12 )
        ->  Bitmap Heap Scan on test3 t1  (cost= 2 . 02 .. 11 . 15  rows= 6  width= 12 )
              Recheck Cond: (keyid = 'A'::bpchar)
              ->  Bitmap Index Scan on test_pkey  (cost= 0 . 00 .. 2 . 02  rows= 6  width= 0 )
                    Index Cond: (keyid = 'A'::bpchar)

Объясните пожалуйста почему идет Seq Scan ?
...
Рейтинг: 0 / 0
Почему не цепляется индекс при JOIN
    #34529309
ездун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
построй еще индекс по KeyID
...
Рейтинг: 0 / 0
Почему не цепляется индекс при JOIN
    #34529356
Mobent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно неправ, но создан же примари индекс KeyID, ToKeyID.
Или это чтото другое ? ))
...
Рейтинг: 0 / 0
Почему не цепляется индекс при JOIN
    #34529404
reuvenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а на каком наборе данных у Вас выходит такой план?

на этом?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
insert into test3 (keyid, tokeyid) values('A', 'C');
insert into test3 (keyid, tokeyid) values('B', 'D');
insert into test3 (keyid, tokeyid) values('B', 'E');
insert into test3 (keyid, tokeyid) values('C', 'E');
insert into test3 (keyid, tokeyid) values('C', 'F');


insert into test3 (tokeyid, keyid) values('A', 'B');
insert into test3 (tokeyid, keyid) values('A', 'C');
insert into test3 (tokeyid, keyid) values('B', 'D');
insert into test3 (tokeyid, keyid) values('B', 'E');
insert into test3 (tokeyid, keyid) values('C', 'E');
insert into test3 (tokeyid, keyid) values('C', 'F');

или побольше?
...
Рейтинг: 0 / 0
Почему не цепляется индекс при JOIN
    #34529551
Mobent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Набор по такой структуре.
Записей пока 800 000 тысяч.

Вообще немного не понятно он работает. Сейчас когда сделал второй индек, он его стал цеплять и работать значительно быстрее.
...
Рейтинг: 0 / 0
Почему не цепляется индекс при JOIN
    #34529887
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется непомешает сделать
VACUUM FULL -а затем включите автовакуум (только не слишком часто!)
Уж больно расходится статистика c заявленными 800 000

NATIVE OS FOR POSTGRESQL - POSIX!!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Почему не цепляется индекс при JOIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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