Postgresql
使用整數數組上的 GIN 索引來建模標籤集
integer[]
在 PostgreSQL 中,在類型列上使用 GIN 索引來建模標籤集而不是使用關係表有什麼優缺點?我正在嘗試設計一個簡單的數據模型,其中包含一個名為
post
每個文章可以有一組標籤的表,類似於 Instagram 或 StackExchange。似乎我可以搜尋post
包含一組標籤的 a 而不必加入兩個表,但我將無法輕鬆獲取一個特定的標籤字元串列表post
。
我想你已經或多或少地回答了你自己的問題。
雖然 GIN 索引可以顯著加快數組內的搜尋速度,但您必須意識到關係數據庫引擎旨在非常有效地進行連接。
tag
此外,當您需要實際標籤時,無論您是否使用數組方法,都必須加入表格。此外,將標籤儲存為數組
integer
使得執行引用完整性(不可能將不存在的標籤 ID 插入數組)變得相當複雜。我能想像到的唯一方法是創建一個觸發器,它永遠不會更快地更改數據。但是,在這些替代方案中進行選擇的最佳方法是創建足夠多的測試數據並自己測量性能。