疑问一:select into 临时表比直接select快?
假设1W条数据,select * from table1 的执行时间要比select * into #temp1 from table1的执行时间要慢很多,为什么会这样的?select * into #temp不是也要先查询1W条数据再放进临时表吗?难道时间都花在输出上?达人解析一下。疑问二:
今天在做数据库查询时候,有一个查询是10860条记录的。在SQL 2005中用SELECT * ...直接查用了3秒,于是我加了 TOP 20,也用了3秒,我奇怪,于是就改为 TOP 10000,竟然到我用完我的耐性而取消执行时还没有查询完毕(用了很多很多很多秒)。为什么????select * 也是10860条,select top 10000也差不多,甚至少了860条,为什么还慢了?

解决方案 »

  1.   

    疑问一:select into 临时表比直接select快?
    假设1W条数据,select * from table1 的执行时间要比select * into #temp1 from table1的执行时间要慢很多,为什么会这样的?select * into #temp不是也要先查询1W条数据再放进临时表吗?难道时间都花在输出上?达人解析一下。
    不会快!但你的select * from table1 显示是需要花时间的。
      

  2.   

    第一个不对第二个,TOP是要排序的
    具体你可以查看执行计划
      

  3.   

    疑问二:
    今天在做数据库查询时候,有一个查询是10860条记录的。在SQL 2005中用SELECT * ...直接查用了3秒,于是我加了 TOP 20,也用了3秒,我奇怪,于是就改为 TOP 10000,竟然到我用完我的耐性而取消执行时还没有查询完毕(用了很多很多很多秒)。为什么????select * 也是10860条,select top 10000也差不多,甚至少了860条,为什么还慢了?
    多了排序
      

  4.   

    第一个 我只知道  select into 比 INSERT into 快  因为它属于BULK操作 
    第二个 排序
      

  5.   

    参考:
    http://school.itzcn.com/index.html#
    上面讲解的比较详细,希望对楼主有所帮助。
      

  6.   

    试了 一下,一百万条数据,select * into 比select * 快的原因是后者需要将结果列出来,而前者是个特殊的select,不需要列出结果。也就是输出的原因。输出之前所用的查询时间是一样的。
    第二个没发现这种情况,top了15070条数据,耗费时间一样的
      

  7.   

    记得清空缓存
    1、功能上就不一样2、select top 1000 from tb 
    比 select慢好多
    首先select top 后不跟order by 是毫无意义的,特别是没有任何索引的一个表,你根本无法预测到他将返回什么样的数据
    加上order by 毫无疑问 排序会很影响速度,比单纯的select要慢
      

  8.   

    top了15070(全部)
    和 top (100) percent
    是一样的,优化器会自动优化
    他和select * from tb 是完全一样的另 select top 1 * from tb order by列
    就不一定比
    select * from tb 慢,毕竟它取得数据很少