与创建另一个表以存储具有多对多关系的值相比,使用数组存储值的postgres有什么性能影响?
我有一个表需要能够在数组列或单独的表中存储大约1-100个不同的字符串值。需要经常搜索这些值以获得完全匹配,因此查找性能至关重要。阵列解决方案会更快,或者使用连接来查找单独表中的值会更快吗?
答案 0 :(得分:2)
需要经常搜索这些值
如何搜索?这很重要。
仅限前缀模式匹配?中缀/后缀模式也匹配?模糊字符串搜索/相似性匹配?对根词进行划分和规范化,去多元化?同义词搜索?是数据字符序列还是自然语言文本?一种语言,还是多种不同的语言?
挥手"搜索"做任何忽略那部分的答案都非常无效。
所以查找性能至关重要。阵列解决方案会更快,或者使用连接来查找单独表中的值会更快吗?
如果没有关于您正在搜索的数据的正确信息,则无法严格确定。
搜索文本字段更加灵活,为您提供了许多您没有使用数组搜索的选项。它通常还会减少必须读取的数据量。
总的来说,我强烈推崇Clodaldo:设计得恰到好处。如果需要,请稍后进行优化。