Forum Webscript.Ru

Общие => Базы данных => Тема начата: commander от 11 Октября 2005, 13:19:37

Название: сравнение текста...
Отправлено: 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 таблице...
я пока не придумал...

предложения?
Название: сравнение текста...
Отправлено: Stellarator от 11 Октября 2005, 13:28:07
Либо убить себя резким ударом головы об стену, либо выяснить у Google, что такое TF-IDF и FULLTEXT index с расстоянием между словами и найти в contrib соответствуюшую реализацию.

Не надо хотеть искать что-то без индексов. Вдвойне не надо хотеть искать что-то без индекса по текстовому полю. И уж тем более - полю типа text.
Название: сравнение текста...
Отправлено: commander от 11 Октября 2005, 13:29:49
Stellarator
умеешь обнадежить.. :(