用户
 找回密码
 入住 CI 中国社区
搜索
查看: 12907|回复: 4
收起左侧

[数据库] Find_in_set的效率

[复制链接]
发表于 2013-2-5 14:02:47 | 显示全部楼层 |阅读模式
跟大家探讨个问题,在涉及到一对多,或多对多的数据库设计的时候是采用中间表好呢,
还是直接用set字段存储,然后用Find_in_set函数查询呢?
哪种效率更高呢。
发表于 2013-2-6 07:15:47 | 显示全部楼层
FIND_IN_SET是在字串中进行寻找,效率会如何?

索引搜索与顺序搜索,速度相比如何?

视乎字串长短吧!
 楼主| 发表于 2013-2-6 19:24:39 | 显示全部楼层
开发中期,发现了这个问题,之前,一对多的关系,都是直接存在一个字段里,然后用FIND_IN_SET函数。
现在,有人说这个函数的效率不高。
所以想改下数据库结构。采用中间表的方法。。
发表于 2013-2-7 18:17:42 | 显示全部楼层
FIND_IN_SET不一定会慢,速度视乎字串长短。

索引搜索一般有额外开销,若平均长度不是很长,FIND_IN_SET也许会更快。


要注意的倒是FIND_IN_SET的第一个参数不可有“,”,否则后果难料。
发表于 2013-7-10 16:42:43 | 显示全部楼层
1.如果你的网页功能不是太复杂,一般一对多就行了,如果复杂点,如:一篇文章可能有多个标签,最好做个中间表,不然........呵呵!
2.只要字串不是太长,FIND_IN_SET的效率很高,这点不必太担心,至少比like高得多。

本版积分规则