疑问一: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条,为什么还慢了?
假设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条,为什么还慢了?
假设1W条数据,select * from table1 的执行时间要比select * into #temp1 from table1的执行时间要慢很多,为什么会这样的?select * into #temp不是也要先查询1W条数据再放进临时表吗?难道时间都花在输出上?达人解析一下。不会快!但你的select * from table1 显示是需要花时间的。
具体你可以查看执行计划
今天在做数据库查询时候,有一个查询是10860条记录的。在SQL 2005中用SELECT * ...直接查用了3秒,于是我加了 TOP 20,也用了3秒,我奇怪,于是就改为 TOP 10000,竟然到我用完我的耐性而取消执行时还没有查询完毕(用了很多很多很多秒)。为什么????select * 也是10860条,select top 10000也差不多,甚至少了860条,为什么还慢了?多了排序
第二个 排序
http://school.itzcn.com/index.html#
上面讲解的比较详细,希望对楼主有所帮助。
第二个没发现这种情况,top了15070条数据,耗费时间一样的
1、功能上就不一样2、select top 1000 from tb
比 select慢好多
首先select top 后不跟order by 是毫无意义的,特别是没有任何索引的一个表,你根本无法预测到他将返回什么样的数据
加上order by 毫无疑问 排序会很影响速度,比单纯的select要慢
和 top (100) percent
是一样的,优化器会自动优化
他和select * from tb 是完全一样的另 select top 1 * from tb order by列
就不一定比
select * from tb 慢,毕竟它取得数据很少