如何优化数据库中逗号分隔列的查询?

Patricia Arquette
发布: 2024-10-30 15:03:03
原创
158 人浏览过

How to Optimize Queries for Comma-Separated Columns in Databases?

优化逗号分隔列的查询

数据库表通常包含带有逗号分隔值列表的列,这在查询特定值时带来了挑战价值观。考虑一个具有以下格式的“CATEGORIES”列的表:

ID | CATEGORIES
---------------
1  | c1
2  | c2,c3
3  | c3,c2
4  | c3
5  | c4,c8,c5,c100
登录后复制

要搜索特定类别,您最初可以选择 LIKE 语句:

SELECT id FROM table WHERE categories LIKE '%c2%'; -- Returns rows 2 and 3
登录后复制

但是,LIKE 语句对于逗号分隔的列可能效率低下。 Oracle 的 FIND_IN_SET() 函数似乎是一个合适的替代方案,但它在 Oracle 10g 中不可用。

更好的方法是使用带有适当通配符的 LIKE:

SELECT 
  * 
FROM
  YourTable 
WHERE 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'
登录后复制

此查询在搜索值周围添加逗号以确保精确匹配。但是,由于使用了 LIKE,它仍然会很慢。

更好的解决方案是将数据重组为具有交叉链接的单独表,以避免逗号分隔列的限制,从而显着提高查询性能。

以上是如何优化数据库中逗号分隔列的查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!