powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Что такое GIST индексы? И вообще индексы в PosgreSQL.
5 сообщений из 5, страница 1 из 1
Что такое GIST индексы? И вообще индексы в PosgreSQL.
    #33288521
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В связи со скорым выходом в свет PG 8.1 в котором эти индексы значительно усовершенствованы и рекомендуются к использованию, хотелось бы собрать воедино информацию по индексам и их применению в PostgreSQL.
В настоящий момент PG поддерживает следющие индексы:
1. btree
2. rtree
3. hash
4. gist

Подробннее по каждому:
1. BTREE - стандартный тип индекса, работает в куче случаев и операторов (<,
<=, =, >=, >), и не работает для IS NULL, странных неправильных LIKE и т.д.
2. RTREE - это для двухмерных типов данных, и не предназначен для простых смертных. Используется для операторов работы с двухмерными данными.
3. HASH - по идее должно очень быстро работать для оператора =, но в связи с особенностями реализации толи btree толи самого hash работает не быстрее, и к использованию не рекомендуется (опять же по форуму летали сообщения о ошибках).
4. GIST - это не столько индекс, сколько инфраструктура для создания индексов. В связи с их полноценностью в PG 8.1 предполагается, что RTREE будет объявлен как устаревший.
Собственно вопрос для тех кто работал с этими индексами вплотную:
Имеет ли смысл (если да, то в каких случаях, если нет то - почему) продолжать использовать btree для стандартных типов данных? Или зачем нужен GIST в обычной жизни (без хытрых типов данных)?

Частично ответ на этот вопрос дает следующая цитата http://www.sai.msu.su/~megera/postgres/talks/gist_tutorial.html :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
btree_gist - реализация B-tree с использованием GiST
Модуль поддерживает практические все основные типы данных, используемые
в PostgreSQL и самостоятельной ценности не имеет, так как встроенный btree 
гораздо лучше. btree_gist применяется для создания композитных индексов,
так как PostgreSQL не поддерживает композитные индексы, созданные с 
разными AM, например, gist и btree. Типичным примером использования 
является создание индекса по (ftsindex, ts), где ftsindex - колонка типа 
tsvector, а ts - timestamp. Такой индекс можно использовать не только для 
обычного полнотекстового поиска, но и для его ускорения поиска в 
определенном временном интервале.

Но хотелось бы чего большего.
...
Рейтинг: 0 / 0
Что такое GIST индексы? И вообще индексы в PosgreSQL.
    #33288808
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
btree-gist намного (30-40% а иногда и больше) быстрее btree при поиске (по крацней мере на
моих данных), кроме того любой gist можно дополнительно хаточить под личные нужды
(поковырявшись в C-ых исходниках) - собственно эта гибкость и есть изюминка gist.
Но наверняка он не будет использоваться в ORDER BY, ибо изначально GIST структура
неупорядочена (btree-gist упорядочен, но движок gist упорядоченность не учитывает и
использовать не может).
Теоретически GIST может учитывать упорядоченность, может через некоторое время будет, но не факт.
...
Рейтинг: 0 / 0
Что такое GIST индексы? И вообще индексы в PosgreSQL.
    #33288837
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Funny_Falconbtree-gist намного (30-40% а иногда и больше) быстрее btree при поиске (по крацней мере на
моих данных), кроме того любой gist можно дополнительно хаточить под личные нужды
(поковырявшись в C-ых исходниках) - собственно эта гибкость и есть изюминка gist.

А можно немного поконкретнее про данные?
Т.е. это строки или timestamp или еще что-то?
...
Рейтинг: 0 / 0
Что такое GIST индексы? И вообще индексы в PosgreSQL.
    #33289138
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строки, номера телефонов, в основном не повторяющиеся. из опыта, gist (btree-gist) очень любит
мало повторяющиеся данные в первых столбцах индексов.
...
Рейтинг: 0 / 0
Что такое GIST индексы? И вообще индексы в PosgreSQL.
    #33289215
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS Опыт, на самом деле не большой, экспертом меня считать нельзя.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Что такое GIST индексы? И вообще индексы в PosgreSQL.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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