Нет, вы не можете этого сделать, потому что pg_largeobject
- системный каталог.Это также не принесет вам пользы, так как объекты хранятся там кусками.
Если вы хотите проиндексировать большой объект, вы делаете что-то не так.В любом случае, большой объект был бы слишком большим, чтобы поместиться в элемент указателя, и кто хочет выполнять поиск, например WHERE blob = '...'
?
Я подозреваю, что у вас есть некоторая информация, хранящаяся внутри большого объекта, которыйВы хотели бы проиндексировать, как (скрытая) идея сохранения вашего состояния в JSON, сохранения его как большого объекта, а затем индексирования одного из его атрибутов.
Было бы лучше хранить такие атрибуты, которые вы хотитедля поиска вне большого объекта в виде обычных столбцов таблицы проблема исчезнет.
Тем не менее, в PostgreSQL вы можете определять индексы для выражений, поэтому, если вы используете bytea
вместо большого объекта (который в любом случае предпочтителен для более мелких двоичных данных) можно определить индекс для выражения, которое извлекает требуемый атрибут из двоичных данных.Вы не можете сделать это с большим объектом, потому что функции для доступа к большим объектам не IMMUTABLE
, так как содержимое большого объекта может измениться, в то время как oid
остается неизменным.