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 这里还有事求各位呢。
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 这里还有事求各位呢。
是不是b.cellid在select语句里起到索引作用?
select 的内容,与索引无关,这句话对吗? 更不对。
LZ详细说说这个查询几个表的索引建立情况,还等着看看执行计划。表a和b是同一个表?
没有!
没有饶这么大圈子干啥
两个表连接,非用三个表。
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上的大大很多,搬个板凳听讲吧
表中记录500w,查询出20条没有lob型字段
也许select 的内容,与索引无关,这句话对吗?
不对,肯定有关;举个例子,如果只查询索引的字段,那就只访问索引了,如果查询的字段超过了索引的字段,那就需要访问表了SQL很奇怪,支持贴执行计划
=========================================
sql server 中有 convering query 的概念,
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... ,这样当然比前者要快了.
因为你用了b.cellid(而cellid是索引),这样就会走索引
我查查在哪页,等等
在p476-p486之间