Не могу разобраться с PostgreSQL (8.2). Есть таблица:
CREATE TABLE dict
(
url_id integer NOT NULL,
word text NOT NULL,
intag integer NOT NULL
)
WITH (OIDS=FALSE);
ALTER TABLE dict OWNER TO user1;
CREATE INDEX dict_url
ON dict
USING btree
(url_id);
CREATE INDEX dict_word
ON dict
USING btree
(word);
CREATE INDEX dict_word_url_id
ON dict
USING btree
(word, url_id);
Это стандартная таблица из mnogosearch. Длина поля word фактически не более 64 символов (точнее сейчас 32, но может быть и больше).
В postgresql.conf:
shared_buffers = 64MB # было 28M
work_mem = 16MB # было 1MB
Все это дело работает на FreeBSD 6.2-RELEASE
CPU: Intel(R) Core(TM)2 Duo CPU E4500 @ 2.20GHz (2205.01-MHz 686-class CPU)
Mem: 183M Active, 1527M Inact, 181M Wired, 106M Cache, 112M Buf, 3816K Free
Swap: 512M Total, 304K Used, 512M Free
EXPLAIN SELECT COUNT(1) FROM dict;
Aggregate (cost=2325136.10..2325136.11 rows=1 width=0)
-> Seq Scan on dict (cost=0.00..2031228.08 rows=117283208 width=0)
SELECT * FROM dict WHERE word = 'someword';
Total query runtime: 103149 ms.
27844 rows retrieved.
Вопрос в том, что очень уж медленно. Как можно узнать почему и решить этот вопрос?