【发布时间】:2012-04-16 03:45:45
【问题描述】:
给定一个值类似于/123/12/34/56/5/ 的字符串列,查询所有包含给定数字的记录(例如12)的最佳方法是什么?
我想到的解决方案是:
SELECT id FROM things WHERE things.path LIKE '%/12/%'
但 AFAIK 由于前导 %,此查询无法在列上使用索引。
一定有更好的东西。这是什么?
使用 PostgreSQL,但更喜欢也适用于其他数据库的解决方案。
【问题讨论】:
-
最好不要多值字段:)
-
我可以使用带有路径的附加表'thing_paths'。然后加入它并查询它~
select DISTINCT things.id from things inner join thing_paths on thing_path.thing_id = things.id WHERE thing.path LIKE '/12/%'。但在这个阶段,这比我理想中想做的要多。
标签: sql postgresql indexing