SELECT account.UserID, account.Account,account.LastAccessMsg,account.LastAccessTime,account.CreateTime FROM T_UserAccount account WHERE UserID NOT IN (SELECT  DISTINCTROW  bill.UserID FROM T_User_Bill bill )  ORDER BY account.CreateTime DESC 
我想查在T_User_Bill 中没有的用户,应该怎样效率好点啊?求……T_User_Bill 1000多w的数据 ,T_UserAccount 20W

解决方案 »

  1.   

    不要用 not inuserID 上加索引。
    select account.* from T_UserAccount account left join T_User_Bill bill on account.UserID = bill.UserID where bill.UserID is null;    
      

  2.   

    在T_User_Bill 的UserID上加索引
    select *
    from  T_UserAccount A
    where not exists (select 1 from  T_User_Bill  B where A.UserID =B.UserID )
      

  3.   

    SELECT * 
    FROM T_UserAccount A
    WHERE not EXISTS(SELECT 1 FROM T_User_Bill B WHERE A.UserID=B.UserID);
      

  4.   

    SELECT account.UserID, account.Account,account.LastAccessMsg,account.LastAccessTime,account.CreateTime 
    FROM T_UserAccount account 
    WHERE not exists (select 1 from T_User_Bill where UserID=account.UserID)
      

  5.   

    在两表USERID上建立索引
    select a.*
    from T_UserAccount A left join T_User_Bill B on A.UserID =B.UserID
    where B.UserID is null