我有這樣的表結構:的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進行測試。 –