如何实现支持逻辑运算的高性能SQL标签搜索查询
目前找到的最相近的参考问题为《如何在SQL中实现布尔标签搜索》,但该问题仍然无法匹配实际需求。
我已知的唯一可行方案是通过后端代码生成对应查询语句传入SQL执行,但该方案性能较低,想了解是否存在其他实现方式,比如使用单条主查询替代多段查询拼接。
也有部分方案使用IN语法实现,对应参考内容为《如何在SQL中基于多个标签查询数据》。
我无法使用常规的GROUP BY HAVING COUNT方案,这类方案无法适配带操作数的标签查询场景。
需要说明的是,绝大多数现有方案都不满足我的需求,我需要实现支持括号分组、嵌套操作数的复杂标签查询,使用的数据库Schema为"Toxi"。
我当前使用的查询示例如下:
SELECT id AS post_id FROM posts WHERE EXISTS (SELECT name FROM tags WHERE post IS post_id AND name IS 'random') AND NOT ( EXISTS (SELECT name FROM tags WHERE post IS post_id AND name IS 'query') AND EXISTS (SELECT name FROM tags WHERE post IS post_id AND name IS '1') ) AND EXISTS (SELECT name FROM tags WHERE post IS post_id AND name IS '2') AND EXISTS (SELECT name FROM tags WHERE post IS post_id AND name IS '3') AND EXISTS (SELECT name FROM tags WHERE post IS post_id AND name IS 'racecar')
内容的提问来源于stack exchange,提问作者James Davis
相关产品推荐
相关产品推荐

