SQL高级之子查询优化

in 与 exists

有索引

  1. 在有索引的情况下用inner join是最好的,其次是inexists最糟糕

无索引

  • 小表驱动大表,因为join方式需要distinct,没有索引distinct消耗性能较大
    • 所以exists性能最佳,in其次,join性能最差
  • 大表驱动小表
    • in和exists的性能应该是接近的,都比较糟糕,exists稍微要好一点,超不过5%
    • 但是inner join由于使用了join buffer所以快很多

你可能感兴趣的:(SQL,Server,sql,数据库)