肥牛说:今天在写select语句查询时,使用了left join语句,但查询出的结果条数总是少很多,和实际情况出入极大。最开始以为是left join用错了,后来仔细对比了left join、right join、inner join、outer join(如下图),还是需要使用left join,经过再三的研究、查找,终于发现了作者的这篇“宝藏”文章,因为错误的使用了on/where这两个条件过滤词,才导致了查询结果的偏差。非常感谢作者simple van的帮助!特此留存备用。本文转自csdn,作者为simple van原文链接https://blog.csdn.net/qq_23586923/article/details/109610313现象left join在我们使用mysql查询的过程中可谓非常常见,比如博客里一篇文章有多少条评论、商城里一个货物有多少评论、一条评论有多少个赞等等。但是由于对join、on、where等关键字的不熟悉,有时候会导致查询结果与预期不符,所以今天我就来总结一下,一起避坑。这里我先给出一个场景,并抛出两个问题,如果你都能答对那这篇文章就不用看了。假
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20可以这样查询:select id from t where num=10union allselect id from t where num=205.in 和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in(1,2,3)对于连续的数值,能用
肥牛
半路出家的产品圈怪蜀黍