Я не пытаюсь перезапустить UUID и серийные деления целочисленного ключа. Я знаю, что с обеих сторон есть действительные баллы. Я использую UUID как первичный ключ в нескольких моих таблицах.PostgreSQL Производительность UUID типа
- Тип колонки:
"uuidKey" text NOT NULL
- индекс:
CREATE UNIQUE INDEX grand_pkey ON grand USING btree ("uuidKey")
- первичного ключа:
ADD CONSTRAINT grand_pkey PRIMARY KEY ("uuidKey");
Вот мой первый вопрос; с PostgreSQL 9.4 есть ли преимущество в производительности для установки типа столбца в UUID?
В документации http://www.postgresql.org/docs/9.4/static/datatype-uuid.html описывается UUID, но есть ли какие-либо преимущества помимо безопасности типа для использования этого типа вместо text
? В документации по типам символов это означает, что char(n)
не имеет никакого преимущества перед text
в PostgreSQL.
Подсказка: Там нет разницы в производительности между этими тремя типами, кроме от увеличения дискового пространства при использовании пустого мягкого типа, а через несколько циклов дополнительного процессора, чтобы проверить длину при хранении в длина- ограниченный столбец. Хотя характер (n) имеет преимущества в некоторых других системах баз данных, в PostgreSQL нет такого преимущества ; на самом деле символ (n) обычно является самым медленным изиз-за его дополнительных затрат на хранение. В большинстве случаев вместо этого следует использовать текст или символ.
Я не беспокоюсь о дискового пространства, мне просто интересно, стоит ли мне сравнивать тесты UUID и текстовых столбцов?
Второй вопрос, хеш против индексов b-дерева. Нет смысла сортировать ключи UUID, так что у b-tree есть какие-либо другие преимущества по сравнению с хэш-индексом?
Если вы создаете уникальный индекс в дополнение к первичному ключу, это необязательно. Когда вы устанавливаете первичный ключ, на нем создается уникальный индекс. –
Возможно, я указал его в неправильном порядке. Индекс был автоматически создан с помощью ограничения первичного ключа. – adamek
По-видимому, согласно документам (во время этого комментария 9.4 является последней стабильной версией), что использование хэш-индексов не рекомендуется: http://www.postgresql.org/docs/9.4/static/indexes -types.html –