栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL:查找不参与关系的行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL:查找不参与关系的行

这是不使用您显示的子查询方法来执行此查询的典型方法。这可以满足@Godeke的要求,以查看基于联接的解决方案。

SELECt * FROM movies m LEFT OUTER JOIN seen s ON (m.id = s.movie_id AND s.user_id = 123)WHERe s.movie_id IS NULL;

但是,在大多数品牌的数据库中,此解决方案的性能可能比子查询解决方案差。最好使用EXPLAIN来分析两个查询,以查看在您的模式和数据下哪个查询会更好。

这是子查询解决方案的另一个变体:

SELECt * FROM movies mWHERe NOT EXISTS (SELECt * FROM seen s        WHERe s.movie_id = m.id          AND s.user_id=123);

这是一个相关的子查询,必须为外部查询的每一行进行评估。通常这很昂贵,并且您的原始示例查询更好。另一方面,在MySQL中,“

NOTEXISTS
”通常比“
column NOT IN (...)
” 更好

同样,您必须测试每个解决方案并比较结果以确保确定。 在不衡量性能的情况下选择任何解决方案都是浪费时间。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号