你好杰米
2019-03-21 10:49
采纳率: 95%
浏览 1.6k

【mysql】多表join加了where条件为什么反而变快了?

最近和同学一起做毕业项目,遇到一个多表join的问题
先上下原本的sql
图片说明

这个速度是0.5秒

图片说明

这个是0.1秒

这个是为什么?不是说在join查询的时候在结尾使用where会影响速度么,怎么反而更快?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 窝米逗佛~ 2019-03-21 11:05
    已采纳

    没听说过你这种说法,实际使用中也没遇到过,正常来说 都是按后一种写法 编写程序;
    left join 的目的在于以左边的表为准连接其他表就是为了提高查询性能的;
    而where语句更好理解了,索引啊,索引也是一个提高查询性能的东西的嘛;
    这两个东西都可以说是属于条件语句,一般是不存在影响性能的可能

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • u011011049 2019-03-21 10:58

    加条件缩小了查询范围

    评论
    解决 无用
    打赏 举报
  • qq_42950138 2019-03-21 11:04

    个人觉得系统只要在手机号为17800000085里面找符合条件的数据,

    评论
    解决 无用
    打赏 举报
  • yangjing41 2019-03-21 13:30

    join变慢的说法是说本来只对一个表查询,变成多表查询,这样就会变慢。
    你的做法是本来是多表查询全部数据,变成增加where条件减少了查询数据,当然就变快了。

    评论
    解决 无用
    打赏 举报
  • 小黑鸣 2019-03-21 17:20

    扫描范围缩小,索引覆盖查询

    评论
    解决 无用
    打赏 举报
  • have_power 2019-03-22 09:32

    我能想到的就是你so那个表肯定有索引,而且索引正好是你最后的那个条件字段,还有就是你so这个表比你的主表要大,而且大很多。正常来说是绝对不可能的,速度只能慢,不可能快的,因为where后面是关联完的条件。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题