以下语句查询很慢, 结果也只有几百条, 去掉条件where ID in (select T_UserID from Topic_Answer)就快了, 有什么办法,请帮忙?
select count(*) from Trainer_User where ID in (select T_UserID from Topic_Answer)  Order By id Desc

解决方案 »

  1.   

    你还是用left join 去查吧。in的效果比较慢。要给字段加索引的
      

  2.   

    用LEFT IN该怎么写上面的语句, 现在比较急, 能不能帮下忙, 先写下, 我再写学习, 谢谢
      

  3.   

    不是IN慢,而是子查询比较慢,建议采用left join,然后id加上索引
      

  4.   

    select count(*) from Trainer_User join Topic_Answer on ID =T_UserID 
    Order By ID Descin()我想Topic_Answer很多行数据表。这样慢就不奇怪了。
    且一般情况下不建议SQL语句 where
    后面接算法表达式 。。执行起来会慢很多
      

  5.   

    select * from Trainer_User , Topic_Answer where Trainer_User.id = Topic_Answer.T_UserID
    通过这个语句查询出来的是两个表的, 我现在只想查询出来第一个表的,该怎么查询
      

  6.   

    select a.*  from Trainer_User  as a , Topic_Answer where Trainer_User.id = Topic_Answer.T_UserID
      

  7.   

    建议你看看sql基础。。这些都是最基本的查询。。
      

  8.   

    谢谢楼上的, 不过还是有些问题哟,就是说select a.*  from Trainer_User  as a , Topic_Answer where Trainer_User.id = Topic_Answer.T_UserID  
    这条语句会把只要符合Trainer_User.id = Topic_Answer.T_UserID 的,本来Trainer_User 只有一条记录,但是Topic_Answer有比较多的记录, 因此, 会把右边有多少条记录, 就显示多少条记录本来我想,如果Trainer_User 中只有一条记录, 那就显示一次就可以了
      

  9.   

    试下这个
    select * from Trainer_User  as a  where exists( select 1 from Topic_Answer as b where a.id = b.T_UserID)
      

  10.   

    select count(a.ID) from Trainer_User a inner join Topic_Answer b on a.ID = b.T_UserID Order By id Desc
      

  11.   


    select a.*  from Trainer_User  as a left join  Topic_Answer on a.id = Topic_Answer.T_UserID and Topic_Answer.T_UserID is not null