У меня есть две таблицы:
table1 (about 200000 records)
number varchar(8)
table2 (about 2000000 records)
number varchar(8)
Поля 'число' в обеих таблицах имеют стандартные индексы.
Для каждой записи в таблице 1 назначено около 10 записей в таблице 2.
Я выполняю запрос:
explain select table1.number from table1, table2 where table1.number = table2.number;
План запроса показывает, что индексы не будут использоваться, Seq сканирует все;)
Но если я уменьшу количество записей в таблице 1 до ~ 2000, план запроса начнет показывать, что индекс будет использоваться.
Может быть, кто-нибудь может сказать мне, почему postgresql ведет себя таким образом?