Forum Webscript.Ru
Общие => Базы данных => Тема начата: commander от 11 Октября 2005, 13:19:37
-
Вопросик такой:
БД 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 таблице...
я пока не придумал...
предложения?
-
Либо убить себя резким ударом головы об стену, либо выяснить у Google, что такое TF-IDF и FULLTEXT index с расстоянием между словами и найти в contrib соответствуюшую реализацию.
Не надо хотеть искать что-то без индексов. Вдвойне не надо хотеть искать что-то без индекса по текстовому полю. И уж тем более - полю типа text.
-
Stellarator
умеешь обнадежить.. :(