最近和同学一起做毕业项目,遇到一个多表join的问题
先上下原本的sql
这个速度是0.5秒
这个是0.1秒
这个是为什么?不是说在join查询的时候在结尾使用where会影响速度么,怎么反而更快?
没听说过你这种说法,实际使用中也没遇到过,正常来说 都是按后一种写法 编写程序;
left join 的目的在于以左边的表为准连接其他表就是为了提高查询性能的;
而where语句更好理解了,索引啊,索引也是一个提高查询性能的东西的嘛;
这两个东西都可以说是属于条件语句,一般是不存在影响性能的可能
加条件缩小了查询范围
个人觉得系统只要在手机号为17800000085里面找符合条件的数据,
join变慢的说法是说本来只对一个表查询,变成多表查询,这样就会变慢。
你的做法是本来是多表查询全部数据,变成增加where条件减少了查询数据,当然就变快了。
扫描范围缩小,索引覆盖查询
我能想到的就是你so那个表肯定有索引,而且索引正好是你最后的那个条件字段,还有就是你so这个表比你的主表要大,而且大很多。正常来说是绝对不可能的,速度只能慢,不可能快的,因为where后面是关联完的条件。