Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 24.03.2013
Сообщений: 171
1

Индекс для UUID

21.08.2021, 18:18. Показов 1618. Ответов 1

Author24 — интернет-сервис помощи студентам
Использую Postresql.
Есть таблица Documents с полями:
Account тип bigint
Document тип bigint
User тип UUID

Есть 2 индекса
T-SQL
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);
T-SQL
1
CREATE INDEX "AccountUserDocument" ON "Documents"  USING btree ("Account", "User", "Document")
Для простого запроса хочу, чтобы использовался индекс AccountUserDocument

SELECT *
FROM "Documents"
WHERE "Account" = 1
AND "USER" = 'dd758b54-55b3-442a-804b-8a3d311432ba'::UUID
AND "Document" = 2

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

T-SQL
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, то он используется

T-SQL
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2021, 18:18
Ответы с готовыми решениями:

Неверный синтаксис для uuid
При попытке заполнить таблицу из файла выдает ошибку: неверный синтаксис для uuid:...

В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5
В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс...

Для чего нужно UUID
Ребят изучаю андройд совсем недавно, можете кто-нибудь понятно объяснить для чего используется UUID?

Даны целые числа а1, а2,., a индекс (n). Вывести на печать только те числа, для которых а индекс (i) ≥ i
Помогите пожалуйста решить задачу, не получается сделать с индексом (i). Даны целые числа а1,...

1
1241 / 960 / 379
Регистрация: 02.09.2012
Сообщений: 2,936
25.08.2021, 00:14 2
Видно, что по Document=2 искать выгоднее - всего 2 страницы буферов, а по User=XXX и Document=2 уже 73 страницы буферов.
Попробуйте обновить статистику по таблице. Ну и может по Document действительно искать выгоднее?? Вы не анализировали селективность по вашим данным??
0
25.08.2021, 00:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2021, 00:14
Помогаю со студенческими работами здесь

Ошибка .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized
Здраствуйте, я пользуюсь средой Dev-C++ с компилятором MinGW. Я пишу DirectX программу и каждый раз...

Дано a1,n Вывести на экран n-ый член последовательности a(индекс n)=a(индекс n-1)+2. 2)Дано n. Последовательность задана формулой b(индекс n)=2+(-1)c
Дано a1,n Вывести на экран n-ый член последовательности a(индекс n)=a(индекс n-1)+2. 2)Дано n....

Uuid
include '%fasm%/win64ax.inc' section '.code' executable start: sub rsp,8 ...

UUID в STM32f030f4p6
Не подскажите, есть ли в этом камне заводской UUID и если да, то по какому адресу лежит?

BIOS - UUID
Привет тому, кто это читает, я бы хотел узнать как можно поменять UUID или System Serial Number у...

Python uuid
Всем доброго времени суток, мне нужна небольшая помощь. Весь день рыл интернет, но ничего не нашел....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru