Вопросик такой:
БД PostgreSQL
есть таблица:
CREATE TABLE msgs
(
msgs_id serial NOT NULL,
forum_id int4,
subforum_id int4,
topic_id int4,
body text,
index_ bool,
CONSTRAINT msgs_pk PRIMARY KEY (msgs_id)
)
WITH OIDS;
=> SELECT COUNT(*) FROM msgs;
count
---------
4436838
(1 row)
в дальнейшем этот результат будет примерно:
4436838*100000
ну и соответвенно имеем:
SELECT msgs_id FROM msgs WHERE body=\'HI all\';
этот запрос уже сейчас выполняеться больше 1 минуты...
банальный вопрос... как увеличить производительность запроса? ...
Ничего лучше кроме того как создать tmpl_msgs
CREATE TABLE tmpl_msgs
(
tmpl_msgs_id serial NOT NULL,
msgs_id int4,
forum_id int4,
subforum_id int4,
topic_id int4,
body_tmpl varchar(15),
CONSTRAINT tmpl_msgs_pk PRIMARY KEY (tmpl_msgs_id)
)
WITH OIDS;
body_tmpl будет содержать 15 первых символов поля msgs.body.
И поиск устроить по tmpl таблице...
я пока не придумал...
предложения?