|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Alex G. Bodnar 2:5020/400 04 Jan 2003 17:41:02 To : All Subject : PostgreSQL и индексы -------------------------------------------------------------------------------- Привет всем. Вот решил опробовать как PostgreSQL работает с большими таблицами. Создал таблицу с несколькими полями. Вставил около 30 миллионов записей. Построил индексы по нескольким полям. После чего пытаюсь сделать выборку типа big=# SELECT * FROM big_t WHERE pridx = 23423; и получаю перебор всей таблицы. По полю pridx создан индекс. Вот план выполнения этого запроса big=# EXPLAIN SELECT * FROM big_t WHERE pridx = 23423; QUERY PLAN ------------------------------------------------------------ Seq Scan on big_t (cost=0.00..964564.20 rows=1 width=112) Filter: (pridx = 23423) Я уже и vacuumdb -z -v big запускал, но индексы не используются и все тут. Может можно как-то заставить PostgreSQL использовать индексы принудительно? Версия PostgreSQL PostgreSQL 7.3.1 on i686-pc-linux-gnu, compiled by GCC 2.96 Вот подробное описание таблицы Колонка | Тип | ---------+-----------------------+------ pridx | bigint | int1 | bigint | int2 | bigint | int3 | bigint | int4 | bigint | char1 | character varying(40) | char2 | character varying(40) | char3 | character varying(40) | char4 | character varying(40) | float1 | double precision | float2 | double precision | float3 | double precision | float4 | double precision | Индексы: Index_Idx unique btree (pridx), Index_Char1 btree (char1), Index_Float1 btree (float1), Index_Int1 btree (int1) --- ifmail v.2.15dev5 * Origin: Unknown (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/34803e62ab1.html, оценка из 5, голосов 10
|