我的表里有一些索引字段,请问(问题1)是否SQLServer在第一次查询时要建立索引而导致第一次查询慢呢?数据库索引是在创建索引时就已经创建,以后数据库会自动维护索引查询的时候,只会用到索引,不会创建索引

解决方案 »

  1.   

    在原来那个帖子里面偶好像回了一个,
    前面加一个CHECKPOINT可以不?
      

  2.   

    DBCC FREEPROCCACHE; 
    DBCC DROPCLEANBUFFERS 
    DBCC FREESYSTEMCACHE ( 'ALL' ) 
    测试了下,
    好像大多数时候这个都不work...
      

  3.   

    CHECKPOINT有什么作用,MSDN上的介绍没看太懂,实际测试中加与不加差别似乎不太大。
      

  4.   

    真的没有办法了吗?
    现在的问题是Oracle和SQL做比较。Oracle在查询时用了请缓存的语句后效果特别明显,SQLServer不明显,二者一比较就不好办了。
      

  5.   

    我在实际测试时有这样的现象:
    数据库中表建立好之后(表中有索引,聚集和非聚集的都有)
    向表中insert大量数据10万以上。
    第一次查询时速度比较慢。
    清除缓存后,再次查询,以后的查询比第一次要快。
    请问第一次查询为什么慢呢?会不会是刚刚insert的数据索引还没有起作用呢?
      

  6.   


    --1.
    CHECKPOINT
    --2.
    DBCC DROPCLEANBUFFERS
    --3.
    DBCC FREEPROCCACHE
    --4.
    DBCC FREESYSTEMCACHE ( 'ALL' ) 
    --5.要接着执行你的查询,不然SQLServer会时刻的自动往缓存里读入最有可能需要的数据页.
      

  7.   


    --查看缓存里当前的内容SELECT * FROM sys.dm_os_buffer_descriptors where page_type IN ('DATA_Page','INDEX_Page') ORDER BY row_count DESC
      

  8.   

    我想楼主可以用多个session来进行查询。
    还有我们的大斑竹是邹建,写错名字可不好。
      

  9.   

    谢谢!请问怎么利用多个session进行查询呢?