powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не работает индекс?
8 сообщений из 8, страница 1 из 1
Не работает индекс?
    #33422943
unvisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Не могу понять почему не используется индекс.
Имеется таблица loging:
-------
id bigserial
dat date
tim time
.......
--------
Потом понадобилось
ALTER TABLE loging ADD primary key (id);
postgree естественно создал индекс.
даем:
EXPLAIN SELECT * from loging where id=4000000;
QUERY PLAN
----------------------------------------------------------
Seq Scan on loging (cost=0.00..134849.35 rows=2 width=125)
Filter: (id = 4318848)
(записей: 2)
хорошо, кошек я не умею готовить, поэтому следующий шаг
CREATE INDEX loging_id ON loging (id);
EXPLAIN SELECT * from loging where id=4000000;
QUERY PLAN
----------------------------------------------------------
Seq Scan on loging (cost=0.00..134849.35 rows=2 width=125)
Filter: (id = 4318848)
(записей: 2)

версия postgresql: 7.4.7. Система linux-2.6.8
PS. на других таблицах индексы использует, в таблице loging записей ~5млн.

заранее спасибо.
...
Рейтинг: 0 / 0
Не работает индекс?
    #33422987
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пересоздай индексы.
...
Рейтинг: 0 / 0
Не работает индекс?
    #33423570
Фотография mef
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сколько записей в таблице?
...
Рейтинг: 0 / 0
Не работает индекс?
    #33423701
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unvisible
Не могу понять почему не используется индекс.
Имеется таблица loging:
-------
id bigserial
.......
--------
версия postgresql: 7.4.7.
аналогично . ну или апгрейд до 8.x
...
Рейтинг: 0 / 0
Не работает индекс?
    #33424330
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXPLAIN SELECT * from loging where id=4000000::int8;
...
Рейтинг: 0 / 0
Не работает индекс?
    #33424432
unvisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Funny_FalconEXPLAIN SELECT * from loging where id=4000000::int8;
угу, совершенно верно, так использует. Эт фича семерки? Рискую быть наглым, но из каких соображений нужно указывать тип? Попробую на 8 сегодня.
...
Рейтинг: 0 / 0
Не работает индекс?
    #33424568
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unvisible Funny_FalconEXPLAIN SELECT * from loging where id=4000000::int8;
угу, совершенно верно, так использует. Эт фича семерки? Рискую быть наглым, но из каких соображений нужно указывать тип? Попробую на 8 сегодня.Из тех, что сам Постгр типа не знает (ну или прикидывается шлангом, что не знает). И он переписывает запрос так, что преобразование типов осуществляется для значения из поля таблицы, а не для передаваемого параметра. В итоге имеем сравнение параметра не со значением поля таблицы, а с функцией от этого значения. В индексе же хранятся-таки значения, а не функция от них. В итоге получается, что применить индекс невозможно.
Кстати, это как раз один из способов избавиться от индекса в плане - применить к проиндексированному полю НЕИЗМЕНЯЮЩУЮ значение этого поля функцию или засунуть поле в како-нить выражение, также не изменяющее значение этого поля. К примеру, вместо INDEXED_FIELD = :my_value написать INDEXED_FIELD + 0 = :my_value. и если в первом случае будет использован индекс по INDEXED_FIELD, то во втором - ни за что. :-)
...
Рейтинг: 0 / 0
Не работает индекс?
    #33428832
unvisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
unvisible Funny_FalconEXPLAIN SELECT * from loging where id=4000000::int8;
угу, совершенно верно, так использует. Эт фича семерки? Попробую на 8 сегодня.

Загрузил базу в 8-ю версию проблема исчезла, то есть пользуется индексами без указания типа. Всем спасибо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не работает индекс?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]