select 后面的内容越少,查询效率越高。这句话对吗?
select 的内容,与索引无关,这句话对吗?看一件有意思的事,
语句如下select  b.cellid,b.tempid,a.sheetname, a.temprow,a.tempcol, a.celltype,a.splittype,a.splitvalue,b.orgid
         from ysgl_excelbasic a, ysgl_excelbasic b, ysgl_exceltemp c
        where a.sheetname = b.sheetname
          and a.temprow = b.temprow
          and a.tempcol = b.tempcol
          and a.tempid = c.ptempid
          and b.tempid = c.tempid
          and a.cellid = 236538表ysgl_excelbasic种 cellid 为主键,记录数,500w。好玩的事情出现了,如果查询的内容中,不包括b.cellid 这项,则查询速度比较慢,加上则快不少,快了3秒多。难道说,加上了查询结果集内容,变了执行计划? 看看。结果?大家先分析分析,容后贴上。还有,http://topic.csdn.net/u/20090221/20/705b05ed-4c70-4a5a-8078-0ece04483724.html 这里还有事求各位呢。

解决方案 »

  1.   

    很奇怪了,没有这样实验过?
    是不是b.cellid在select语句里起到索引作用?
      

  2.   

    select 后面的内容越少,查询效率越高。这句话对吗? 不对。
    select 的内容,与索引无关,这句话对吗? 更不对。
    LZ详细说说这个查询几个表的索引建立情况,还等着看看执行计划。表a和b是同一个表?
      

  3.   

    你张家口有亲戚吗?
    没有!
    没有饶这么大圈子干啥
    两个表连接,非用三个表。
    select 
           rownum newid,
           c.tempid,
           b.sheetname,
           b.temprow,
           b.tempcol,
           b.celltype,
           b.splittype,
           b.splitvalue,
           c.orgid,
           c.ptempid
      from  ysgl_excelbasic b, ysgl_exceltemp c
     where  b.tempid = c.ptempid
       and b.cellid = 236530逻辑层的问题解答了。
    可刚才的问题呢?
    别闹,CSDN上的大大很多,搬个板凳听讲吧
      

  4.   

    select 后面的内容越少,查询效率越高。这句话对吗? 这句话对吧,你查一百个字段 与十个字段效率肯定有区别的
      

  5.   

    是分区表。
    表中记录500w,查询出20条没有lob型字段
      

  6.   

    select 后面的内容越少,查询效率越高。这句话对吗?
    也许select 的内容,与索引无关,这句话对吗? 
    不对,肯定有关;举个例子,如果只查询索引的字段,那就只访问索引了,如果查询的字段超过了索引的字段,那就需要访问表了SQL很奇怪,支持贴执行计划
      

  7.   

    select 的内容,与索引无关,这句话对吗? 
    =========================================
    sql server 中有 convering query 的概念,
      

  8.   

    凑个热闹:
    1.咋一看sql文,还在纳闷怎么写出了两个相同的表来.其查询计划与楼主修改后的肯定是不一样的,
    前者会走表连接,后者走index scan--〉rowid-->找到对应数据.2.关键的地方你的a,b两表连接没有用到主键(或者索引).
    看下where条件中a表和b表之间的关联字段应该不是索引字段,所以当去找b表时会全表扫描.
    当你加上红字的那个字段b.cellid时,我觉得CBO此时会先去b表中找出与a表对应的b.cellid=236538这个值(这步走索引),然后再走rowid找到数据,最才再是其它的a.XX=b.XX... ,这样当然比前者要快了.
      

  9.   

    我在oracle 9i&10g编程艺术这本书上看到类似的解释,跟 这位前辈解释差不多
    因为你用了b.cellid(而cellid是索引),这样就会走索引
    我查查在哪页,等等
    在p476-p486之间