Mysql中的FIND_IN_SET函数在我知道它之前,我在做一个一对多的外键查询时,都会在中间设计一个关系表。比如一篇文章(post)对应多个标签(tag),我就会在中间设计一个关系表(post_tag_mapping)来记录文章和标签的对应关系,然后查询某一个标签下的文章时,就用JOIN语句来实现了,这也应该是处理一对多关系查询时的标准做法。一般语句就像下面SELECT*FROMpostLEFTJOINpost_tag_mappingWHEREtag_id=123但是当我发现FIND_IN_SET函数后,就可以完全不用JOIN这种查询方式了,我们完全可以在文章表里设置一个类型为SET的标签字段(tags),它存储标签id的格式就像这样111,222,333,查询语句就变成了SELECT*FROMpostWHEREFIND_IN_SET('123',tags)不用做连接查询了,我不知道这两者在查询效率上哪个更占优势?他们的应用场景有什么需要注意的地方?SET类型能够做索引吗,做完以后对FIND_IN_SET有用吗?
精慕HU
慕后森
相关分类