重启SQL Server服务器,执行一个查询,该查询把一部分查询的结果插入到一个临时表#tempA中,(数据量大概在2,3万条记录),需要18秒,但是之后再执行该查询就很快,1秒内就出结果。
但是同样是重启SQL Server服务器,执行该查询,不把查询结果放到临时表中,速度就很快,不知道原因何在?
如果把插入的临时表换成表变量@table,依然在重启sql server后的第一次很慢,请问是什么原因,如果要想得到一个查询的中间结果,除了使用临时表,表变量外,还有什么方法呢?谢谢指点!

解决方案 »

  1.   

    重启SQL Server服务器,只执行那个查询而不写入临时表或表变量中,看看是不是也很慢.估计慢的瓶颈是发生在查询这个环节.
    表变量是建立在内存中的,临时表是建立在硬盘上的,所以操作表变量的速度要比操作临时表快.具体使用表变量还是临时表,要看楼主机器的内存了.
      

  2.   

    (重启SQL Server服务器,只执行那个查询而不写入临时表或表变量中,看看是不是也很慢.估计慢的瓶颈是发生在查询这个环节.)
    只查询不慢,就是插入到临时表或表变量时很慢,而且仅仅是第一次执行慢,第二次查询就快多了。
      

  3.   

    可能是I/O瓶颈,也可能与SQLSERVER的内部优化有关,我不熟悉.一定有懂得这方面知识的朋友,请这些朋友门赐教.