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

Индекс для UUID

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

Студворк — интернет-сервис помощи студентам
Использую 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2021, 18:18
Ответы с готовыми решениями:

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

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

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

1
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
25.08.2021, 00:14
Видно, что по Document=2 искать выгоднее - всего 2 страницы буферов, а по User=XXX и Document=2 уже 73 страницы буферов.
Попробуйте обновить статистику по таблице. Ну и может по Document действительно искать выгоднее?? Вы не анализировали селективность по вашим данным??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.08.2021, 00:14
Помогаю со студенческими работами здесь

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

Ошибка .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 invoke UuidCreate,Uuid invoke...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru