Поле контрольной суммы в PostgreSQL для сравнения содержимого - PullRequest
2 голосов
/ 07 марта 2012

У меня есть поле в таблице с большим содержанием (текстовые или двоичные данные). Если я хочу узнать, равен ли другой текст этому, я могу использовать контрольную сумму для сравнения двух текстов. Я могу определить это поле как UNIQUE, чтобы избежать повторного содержимого.

Я сомневаюсь, что если я создам поле контрольной суммы, это сравнение ускорится, поэтому PostgreSQL уже делает это (без вмешательства программиста) или мне нужно сделать это вручную?

РЕДАКТИРОВАТЬ: Что лучше, создать контрольную сумму для поля TEXT, использовать контрольную сумму для него или два способа одно и то же?

Ответы [ 2 ]

4 голосов
/ 07 марта 2012

В PostgreSQL нет «контрольной суммы» по умолчанию для больших столбцов, вам придется реализовать ее самостоятельно.

Ответ на комментарий

Хеш-индексы обеспечивают высокую производительность для проверок на равенство. И они обновляются автоматически. Но они не полностью интегрированы в PostgreSQL (пока), поэтому их использование не рекомендуется - прочитайте руководство .

И вы не можете запрашивать значения и использовать их, например, в своем приложении. Вы можете сделать это с помощью столбца контрольной суммы, но вам нужно добавить индекс производительности, если ваша таблица велика, и поддерживать столбец. Я бы использовал триггер BEFORE INSERT OR UPDATE для этого.

Итак, хэш-индекс может быть, а может и не быть для вас. Идея @ А.Х. определенно подходит к проблеме ...

1 голос
/ 07 марта 2012

Вы можете прочитать руководство Типы индексов , потому что в основном вы хотите сделать то же самое, что и хеш-индекс, но только своими руками. Таким образом, вы можете прочитать о плюсах и минусах хеш-индекса в PostgreSQL.

...