powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Index для UUID
3 сообщений из 3, страница 1 из 1
Index для UUID
    #40092423
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую Postresql.
Есть таблица Documents c полями:
Account тип bigint
Document тип bigint
User тип UUID

Есть 2 индекса
Код: plsql
1.
2.
CREATE INDEX "AccountDocument" ON "Documents" USING btree ("Account" NULLS LAST, "Document" NULLS LAST)
WHERE ("Account" IS NOT NULL OR "Document" IS NOT NULL);



Код: plsql
1.
CREATE INDEX "AccountUserDocument" ON "Documents"  USING btree ("Account", "User", "Document")



Для простого запроса хочу, чтобы использовался индекс AccountUserDocument

Код: plsql
1.
2.
3.
4.
5.
SELECT *
FROM "Documents"
WHERE "Account" = 1
AND "USER" = 'dd758b54-55b3-442a-804b-8a3d311432ba'::UUID 
AND "Document" = 2



но используется индекс AccountDocument

Код: plsql
1.
2.
3.
4.
5.
6.
"Index Scan using "AccountDocument" on "Documents"  (cost=0.29..8.31 rows=1 width=73) (actual time=0.016..0.016 rows=0 loops=1)"
"  Index Cond: ("Document" =2)"
"  Filter: (("Account" =1) AND ("User" = 'dd758b54-55b3-442a-804b-8a3d311432ba'::uuid))"
"  Buffers: shared hit=2"
"Planning time: 1.026 ms"
"Execution time: 0.039 ms"



только есть указать у индекса AccountUserDocument тип индекса gist, то он используется

Код: plsql
1.
2.
3.
4.
5.
6.
"Index Scan using "AccoutUserDocument" on "Documents"  (cost=0.28..8.30 rows=1 width=73) (actual time=3.626..3.626 rows=0 loops=1)"
"  Index Cond: (("User" = 'dd758b54-55b3-442a-804b-8a3d311432ba'::uuid) AND ("Document" = 2))"
"  Filter: ("Account" = 1)"
"  Buffers: shared hit=73"
"Planning time: 0.946 ms"
"Execution time: 3.652 ms"



Почитал инфу про тип gist он обычно используется для полнотекстового поиска.

Вопрос почему индекс не используется с типом btree, только из-за того, что в индексе есть поле UUID?
...
Рейтинг: 0 / 0
Index для UUID
    #40092463
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11,

А сколько вообще строк у вас в таблице этой?
Сделайте хотя бы 100.000 для тестирования а потом уже сравнивайте.
Пока у вас 10 строк в таблице - там любой индекс будет хорошую скорость давать и база вольна выбирать что ей больше нравится.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Index для UUID
    #40092609
Надфиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk

Пока у вас 10 строк в таблице - там любой индекс будет хорошую скорость

я б сказал что любой индекс тут(при малом числе строк, у меня обычно тысяч 5 записей) будет только замедлять в 99.9999% случаев. кроме ситуаций, когда нужно проверить на уникальность и для поддержки ФК
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Index для UUID
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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