|
|
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
|