前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Exists 和 in

Exists 和 in

作者头像
用户9347382
发布2022-02-22 15:22:03
3690
发布2022-02-22 15:22:03
举报
文章被收录于专栏:程序员阿杰程序员阿杰
代码语言:javascript
复制
SELECT
    *
FROM
    `user`
WHERE
    `user`.id IN (
        SELECT
            `order`.user_id
        FROM
            `order`
    )

当前语句等价于

代码语言:javascript
复制
List resultSet=[];
Array A=(select * from A); 
Array B=(select id from B);
for(int i=0;i<A.length;i++) {    
    for(int j=0;j<B.length;j++) {       
            if(A[i].id==B[j].id) {          
                    resultSet.add(A[i]);          
                    break;         
     }     
  } } 
return resultSet;

可以发现查询的次数取决于两张表的行数,时间复杂度为0(n2) 结论:in()适合B表比A表数据小的情况

代码语言:javascript
复制
SELECT
    `user`.*
FROM
    `user`
WHERE
    EXISTS (
        SELECT
            `order`.user_id
        FROM
            `order`
        WHERE
            `user`.id = `order`.user_id
    )

当前语句等价于

代码语言:javascript
复制
List resultSet[];
Array A = (SELECT 'user.*' FROM  'user');
for(int i = 0; i < A.length(); ++i){
   if(EXIST(A[i])){
        resultSet.add(A[i]);
    }
    <=> SELECT 'order.user_id' FROM 'order' WHERE 'user.id' = 'order.user_id';
}

本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名,转载请标明出处

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档