信息表info 栏目表classt现在查询info表,条件是查询的info那个表的信息所属的栏目模型ID(字段modid)不等于10,用classid关联两个表
我有两种方法
1,select * from info where (select modid from classt where classid=info.classid)<>10
2,select info.* from info,classt where classt.modid<>10表面上看第二个简单些,因为需要结合程序,我用第一种方便
现不考虑方便问题,请问哪个SQL效率更高

解决方案 »

  1.   

    具体看一下explain select * from info where (select modid from classt where classid=info.classid)<>10explain select info.* from info,classt where classt.moid<>10
    执行计划不就知道那个效率更高一些。
      

  2.   

    用explain 解析下不就知道了
      

  3.   

    1,select * from info where (select modid from classt where classid=info.classid)<>10
    2,select info.* from info,classt where classt.modid<>10上面两个语句如果你没有写错的话,生成结果是不同的。功能并不等效,也无从比较性能。
      

  4.   

    select info.* from info,classt where classt.modid<>10
    应该改为
    select info.* from info,classt
    where info.classid=classt .classid and classt.modid<>10这样功能才是一样!
      

  5.   

    同意:LXY2010
    是否需要换写法,要看数据。另外你explain下,看看。
      

  6.   

    不好意思,第二个SQL是写错了
    select info.* from info,classt where info.classid=classt .classid and classt.modid<>10应该是这样,那就是查询两个表,要比子查询快一些是吧
      

  7.   

    select info.* from info,classt where info.classid=classt .classid and classt.modid<>10应该是这条语句的效率会更高一些。
    具体可以explain select info.* from info,classt where info.classid=classt .classid and classt.modid<>10
          select * from info where (select modid from classt where classid=info.classid)<>10
    执行计划不就知道那个效率更高一些。