语句1:
SELECT * FROM V_frmMacSpeed_List WHERE macCode='mac602' ORDER BY ClassSort ASC,Spec ASC,MacSort ASC
语句2:
SELECT * FROM V_frmMacSpeed_List WHERE charindex(macCode,'mac602')=1 ORDER BY ClassSort ASC,Spec ASC,MacSort ASC
--------------------------------
以我的判断是语句1:比语句2:执行快,但执行结果却是:
语句1:超时
语句2:几毫秒就加载完成,
数据总共有2000多条。
-----------------
V_frmMacSpeed_List 是一个视图。SQL

解决方案 »

  1.   

    有执行计划可以看一下吗?如果macCode没索引的话两句应该效果差不多。
      

  2.   

    每次都这样,按道理,where 条件判断的话,=要比charindex 快才对啊。
      

  3.   

    2个查询语句,就where后面的一个是用=一个是用charindex,查询结构都是一样的,只是用了不同方法。为什么还要看视图结构?请您仔细看一下问题
      

  4.   

    mssql有时候自作主张进行了优化,但是效果反而更差
      

  5.   

    2个查询语句,就where后面的一个是用=一个是用charindex,查询结构都是一样的,只是用了不同方法。为什么还要看视图结构?请您仔细看一下问题
    如果是表的话,不用考虑。
    视图的话,查询优化器可能根据视图的代码,产生截然不同的执行计划。
    视图也是sql语句。你通过试图隐藏了很大一部分sql,然后单独看where条件,来比较性能。貌似不太可取
      

  6.   

    2个查询语句,就where后面的一个是用=一个是用charindex,查询结构都是一样的,只是用了不同方法。为什么还要看视图结构?请您仔细看一下问题
    如果是表的话,不用考虑。
    视图的话,查询优化器可能根据视图的代码,产生截然不同的执行计划。
    视图也是sql语句。你通过试图隐藏了很大一部分sql,然后单独看where条件,来比较性能。貌似不太可取

    有理