sql会根据你表中创建的索引的情况,结合你的查询语句,来确定条件的执行顺序.

解决方案 »

  1.   

    那这个是否正确:
    1: 
       select * from A join B on a.id = b.id
       where b.name > 'abc'
    2:
       select * from A join B on a.id = b.id and b.name > 'abc'
     
    2比1好
    1是先连接后再在结果中筛选
    2是先在B中筛选后再与A连接。
      

  2.   

    同样的,SQL会根据你的表结构进行优化,所以1,2的效果可能会是一样的.
      

  3.   

    也不是没有区别,区别是有的,关键是看结构,SQL是根据表结构来优化的.
      

  4.   

    --复制下面两句到查询分析器中,按Ctrl+L分析就知道了.select a.id,a.name 
    from sysobjects a inner join syscolumns b on a.id=b.id
    where a.xtype='U'select a.id,a.name 
    from sysobjects a inner join syscolumns b on a.id=b.id and a.xtype='U'
      

  5.   

    设置  set statistics time on
    在对你的当前的数据表进行查询时
    对你所有的疑惑的语句进行查询与测试。要经过多次的测试最后取每次执行时间的平均值。
    某些查询语句的效率高低是不能下绝对的定论的,要具体针对你的数据表和具体的运行环境。
      

  6.   

    一般來說靠近where條件第一個最好是索引位比較好
      

  7.   

    select a.id,a.name 
    from sysobjects a inner join syscolumns b on a.id=b.id
    where a.xtype='U'select a.id,a.name 
    from sysobjects a inner join syscolumns b on a.id=b.id and a.xtype='U'这两条的查询成本都是50%,意思是所占时间一样吗?什么是查询成本?