sqlite – 从多个关系中匹配
发布时间:2020-12-12 19:08:25 所属栏目:百科 来源:网络整理
导读:我有一个“帖子”表.每个帖子记录可以有一个或多个标签. 如果我将标记存储到单个列中,作为逗号分隔的字符串,我可以轻松找到标记为“Abc”并标记为“Def”的帖子,甚至可以进行部分匹配. 我正在使用sqlite和这个方法的“FTS”表,它工作正常,但有人告诉我这是一
我有一个“帖子”表.每个帖子记录可以有一个或多个标签.
如果我将标记存储到单个列中,作为逗号分隔的字符串,我可以轻松找到标记为“Abc”并标记为“Def”的帖子,甚至可以进行部分匹配. 我正在使用sqlite和这个方法的“FTS”表,它工作正常,但有人告诉我这是一个不好的做法,我应该将标签存储在不同的表中并使用JOIN. 由于您需要对列值执行字符串操作以分隔标记,因此性能会降低.所以索引不能使用.这违反了数据库设计的规范化规则. 一个更好的设计 tags table ---------- id name posts table ----------- id title body ... post_tags table --------------- post_id tag_id 要获得所有帖子都有两个标签 select p.id,p.title,p.body from posts p join post_tags pt on pt.post_id = p.id join tags t on pt.tag_id = t.id where t.name in ('abc','def') group by p.id,p.body having count(distinct t.id) = 2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |