У меня есть база данных PostgreSQL 9.2, где каждая учетная запись имеет схему, как показано ниже:
My_Database
|-> Schemas
|-> AccountA
|-> AccountB
|-> AccountC
|-> AccountD
|-> AccountE
.
.
.
|-> AccountZ
|-> MasterAccount
Все схемы имеют таблицу с именем imovel
, в которой есть столбец с именем id
, структура это:
CREATE SEQUENCE MasterAccount.imovel_id_seq;
CREATE TABLE MasterAccount.imovel (
id integer DEFAULT nextval('MasterAccount.imovel_id_seq') NOT NULL PRIMARY KEY,
title varchar(80) NOT NULL
);
CREATE TABLE AccountA.imovel (
id integer DEFAULT nextval('MasterAccount.imovel_id_seq') PRIMARY KEY
)
INHERITS (MasterAccount.imovel);
.
.
.
CREATE TABLE AccountZ.imovel (
id integer DEFAULT nextval('MasterAccount.imovel_id_seq') PRIMARY KEY
)
INHERITS (MasterAccount.imovel);
Сегодня у меня 127 учетных записей, и когда я запускаю SELECT
в дочерней таблице, ответ происходит быстро. Но когда я запускаю тот же SELECT
в таблице отца, он работает медленно. Я видел EXPLAIN
и кажется, что PostgreSQL использует ИНДЕКС каждого ребенка вместо использования только ИНДЕКС отца.
Можно ли улучшить это поведение? Ниже приведены EXPLAIN.
Мне нужно использовать SELECT
в главной таблице для глобального поиска.
SELECT в дочерней таблице
ВЫБРАТЬ в родительской таблице