我有一大組非規範化的數據與不均勻的屬性(有些屬性在那裏,有些不是),並將其插入到一個hstore列。此列包含大約300個鍵/值對,每行總大小爲5000個字符。我想用ilike
和OR
運算符對這些屬性的某些屬性進行字符串搜索查詢,總共100000行。PostgreSQL hstore:通過索引改進LIKE性能?
查詢:
SELECT hstore->'a' AS a, hstore->'b' AS b,hstore->'c' AS c
FROM table
WHERE
hstore->'x' ILIKE '123%'
or hstore->'y' ILIKE '123%'
or hstore->'z' ILIKE '123%'
隨着對沒有索引的表,我得到了> 500ms的運行時間(explain analyze
)這個查詢。
使用我的舊的RDBMS索引表,其中每個屬性都在一個列中,我獲得了更好的性能,但靈活性較差。
我嘗試不同/多個索引上的那些hstore屬性,像
CREATE INDEX idx_table_hstore ON table((hstore->'a'))
和一個索引每個,但性能是相同的不具有索引在所有。
就我所知,GIN/GIST索引不會有多大意義,因爲列很大,不需要幾何操作符(我可能在這個問題上是錯的)。
在這種情況下,您會使用哪種索引方法來獲得與使用經典模型相似甚至更好的性能?