MS与数据库表有关吧!
你先把你各种条件组合下的SQL语名拿到数据库中测试一下速度并进行一定优化先!

解决方案 »

  1.   

    1、你说的注释是什么,这里面哪里有注释啊。你不会是把<!--dynamic prepend = "and">
    </dynamic-->   中间这段当成注释了吧。这段不是注释,是查询条件,就象SQL语句中的where的作用,你如果把这都去了,那就表明没有where条件,直接查询数据库里所有数据,那速度当然快了。
    2、left join 是连接别的表,将别的表的字段通过某种规则将所需字段临时添加到原边中。你如果不啊这个去了,那速度当然快了,你说你是直接从一个表里查数据快还是通过联合查询从多个表里查数据快啊。
    建议回去好好看看itabis的文档,以后再提这样的问题会让人笑话的。再好好看看数据库查询的联结你自己就有答案了。
      

  2.   

    freedom2001(天翔) ( ) 信誉:99    Blog  2006-09-08 11:46:00  得分: 0  
     
     
       1、你说的注释是什么,这里面哪里有注释啊。你不会是把<!--dynamic prepend = "and">
    </dynamic-->   中间这段当成注释了吧。这段不是注释,是查询条件,就象SQL语句中的where的作用,你如果把这都去了,那就表明没有where条件,直接查询数据库里所有数据,那速度当然快了。
    2、left join 是连接别的表,将别的表的字段通过某种规则将所需字段临时添加到原边中。你如果不啊这个去了,那速度当然快了,你说你是直接从一个表里查数据快还是通过联合查询从多个表里查数据快啊。
    建议回去好好看看itabis的文档,以后再提这样的问题会让人笑话的。再好好看看数据库查询的联结你自己就有答案了。
      
     
    ------------------------------------------
    天翔:<!--dynamic prepend = "and">……</dynamic-->这个不是注释是什么?我也建议你回去好好xml的文档-有关注释的部分,免得让人笑话 谁都知道没查询条件比有查询条件快!但是我要说明的是我的代码中where传的值都没有,也就是说where后的都不执行,那为什么查询速度还非常慢呢?
      

  3.   

    但是我要说明的是我的代码中where传的值都没有,也就是说where后的都不执行,那为什么查询速度还非常慢呢?
    -------------------------------------------
    <isNotNull>先要判断值是否为null,若为null时才不追加这个条件。
    每条数据都要经过11次这种判断。时间当然会多了。
    2、把“ left join tFYGL tf on tc.bh=tf.bh ”(即sql中只保留一个left join)去掉的话查询速度也可以增加。
    ----------------------------------------------
    没什么说的。去掉的话速度一定会增加。不过增加多少要看表的大小。
      

  4.   

    不愿意跟你争什么东西,xml里的一些用法在很多地方都已经扩展和补充了。现在讨论的是ibatis的用法,至于我说的那个你自己好好看看文档就知道了。不要一碰到xml文件就非拿xml 的语法什么的死卡。中间那段就是判断个字段是否为空和赋值的,如果为空就不作为条件,如果不为空就赋值作为查询条件,就算你不赋值他也要判断速度当然慢了。如果按照你说的那都是注释,他怎么会 执行,怎么会进行判断。你不是非那什么标准来卡吗?用你的说法能解释这个问题吗?
      

  5.   

    ibatis我们先抛开不管!我这个数据库是MSSQL。
    我找查询慢的问题出在哪了:
    sql1如下:
     SELECT * FROM tContribution tc left join tKW tk on tc.bh=tk.bh  left join tFYGL tf on tc.bh=tf.bh where (tf.lx='BM' OR tf.lx is null)
    and convert(char(4),tc.lgrq,120) =substring(convert(char(4),'2006-09-06',120),1,4)
    数据7000条,查询时间16秒。sql2如下:
     SELECT * FROM tContribution tc left join tKW tk on tc.bh=tk.bh  left join tFYGL tf on  tc.bh=tf.bh where (tf.lx='BM' OR tf.lx is null)
    数据10000条,查询时间1秒。
    ------------------------
    即说明了MSSQL用join时,最好不要加入函数,否则的话会很慢!!
      

  6.   

    首先 支持hqqiang(我家就在岸上住) ;他说德没错尽量不要用 join.
    还有一点很鄙视楼主.
    -----------------------------------------
    天翔:<!--dynamic prepend = "and">……</dynamic-->这个不是注释是什么?我也建议你回去好好xml的文档-有关注释的部分,免得让人笑话 -------------------------------------------------
    不管别人说的对与错,都很认真德回答了你的问题,你连讽带刺的说别人不太好吧!!!!
      

  7.   

    应该是SQL的问题。优化吧。如建立索引,优化语句等