Re: [pgsql-ru-general] GIN индекс: сортировка
От | Oleg Bartunov |
---|---|
Тема | Re: [pgsql-ru-general] GIN индекс: сортировка |
Дата | |
Msg-id | CAF4Au4xJxXg-tSwk7yJK9m9Hse5rcoCOXYXfBLFEhtJT6cAKVQ@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: GIN индекс: сортировка
|
Список | pgsql-ru-general |
2014-09-29 23:45 GMT+04:00 Dmitry E. Oboukhov <unera@debian.org>:
А еще по GIST может кто подскажет
такая база:
id, text
база оч большая (база из прошлого примера, просто все строки
сконкатенированы)
строим GIST на триграммах
CREATE INDEX "test_trgm_idx" ON "table"
USING GIST (
"text"
"public"."gist_trgm_ops"
);
Далее кладем в базу мнооого записей.
Далее запрос
SELECT
*
FROM
table
ORDER BY
"text" <-> 'test'
LIMIT
100
а WHERE "text" % 'test' влом написать ?
Работает, но меееееедленно:
EXPLAIN ANALYZE показывает такое:
Limit (cost=0.67..209.06 rows=50 width=159) (actual time=36.071..2356.039 rows=50 loops=1)
-> Index Scan using test_trgm_idx on table (cost=0.67..23567041.91 rows=5654375 width=159) (actual time=36.070..2356.012 rows=50 loops=1)
Order By: text <-> 'test'
Total runtime: 2356.102 ms
(4 строки)
Я чет не понимаю. по идее он должен был бы открыть итератор и идти от
наиболее похожих к наименее и взять первые 100.
а он весь индекс перебирает (то есть проку от индекса - 0, без индекса
работает столько же времени - 2 секунды)
Вопрос: что сделать чтобы уменьшить время работы?
--
. ''`. Dmitry E. Oboukhov
: :’ : email: unera@debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iEYEAREDAAYFAlQptuUACgkQq4wAz/jiZTfPQwCgoKkY0zUsUI8RhgMTWm/Jcxa8
c/EAoLjfogCdI1E1g285HjN/zjG5djN3
=7kKh
-----END PGP SIGNATURE-----
В списке pgsql-ru-general по дате отправления: