У меня есть эта таблица структуры:Postgres 9,3 индекс включая JSON столбец
CREATE TABLE user_items
(
user_id bigint references users(id) NOT NULL,
item_id bigint references items(id) NOT NULL,
col1 json DEFAULT '[{"text":""}]',
col2 json DEFAULT '[{"date":"","text":""}]',
col3 json DEFAULT '{"text":""}',
PRIMARY KEY (user_id, item_id)
)
я буду выполнение запросов, таких как это:
SELECT * FROM user_items WHERE item_id = '?' AND col1 IS NOT NULL
мне нужен индекс (item_id, col1)
в этом случае делать?
И если да, то каков правильный способ это сделать, потому что при попытке его Postgres выдает ошибку, так как col1
- это тип JSON
.
Спасибо за это. Я думал, что причина, по которой тип данных имеет значение, заключается в том, что я не могу просто сделать индекс (item_id, col1). Кажется, это имеет смысл, поскольку «col1» - это тип JSON. – haknick
@haknick: Тип данных * будет * релевантным для индекса в столбце JSON. Я избежал проблемы, сделав это условие для частичного индекса. Тестирование для NULL работает для любого типа. –