zoukankan      html  css  js  c++  java
  • MySQL中 in和exists的区别


    A表: 100条数据 , B: 10条数据

    select * from A where id in ( select aid from B )

    先执行括号里面的查询,然后执行外面,总共需要查询的次数的 B+1=11次
    需要注意的是 括号里面的查询会缓存到内存中


    select * from A where exists ( select aid from B where aid=A.id )

    先执行括号外面的查询,然后拿到外面的查询结果去执行括号里面的查询
    总共查询的次数是 1+A=101次


    得出的结论: 如果子查询数量少,用in,子查询数量达用 exists,也可以理解为先查询小的那个

    这个结论也不是绝对的,还要考虑索引之类的优化,比如A小于B,按照上面的理论应该使用 exists,但是如果B有索引A没有索引呢?
    可能结果就不一样了

  • 相关阅读:
    flask 第三方组件
    Flask基础与进阶
    odoo10 视图
    odoo10 ORM操作
    odoo10基础
    字典的setdefault方法
    redis常用操作
    git常用命令与操作
    vue_axios
    odoo 权限设置
  • 原文地址:https://www.cnblogs.com/codeAB/p/10066508.html
Copyright © 2011-2022 走看看