解决方案 »

  1.   

    建议设置内存,即使不设置最小,也要设置最大,一般没有标准,你可以留4G给操作系统,其他的分配给SQL Server。另外你的“卡”,需要先告知整体环境,数据库文件的存放位置等等
      

  2.   

    执行一下这个语句,然后上图。SELECT TOP 10 * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC
      

  3.   

    --执行计划中使用了并行操作的语句:
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    WITH XMLNAMESPACES (DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
    SELECT COALESCE(DB_NAME(p.dbid)
        , p.query_plan.value('(//RelOp/OutputList/ColumnReference/@Database)[1]','nvarchar(128)'))
         AS database_name
      ,DB_NAME(p.dbid) + '.' + OBJECT_SCHEMA_NAME(p.objectid, p.dbid)
        + '.' + OBJECT_NAME(p.objectid, p.dbid) AS object_name
      ,cp.objtype
      ,p.query_plan
      ,cp.UseCounts AS use_counts
      ,cp.plan_handle
      ,CAST('<?query --' + CHAR(13) + q.text + CHAR(13) + '--?>' AS XML) AS sql_text
    FROM sys.dm_exec_cached_plans cp
    CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) p
    CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS q
    WHERE cp.cacheobjtype = 'Compiled Plan'
    AND p.query_plan.exist('//RelOp[@Parallel = "1"]') = 1
    ORDER BY COALESCE(DB_NAME(p.dbid), p.query_plan.value('(//RelOp/OutputList/ColumnReference/@
    Database)[1]','nvarchar(128)')), UseCounts DESC上图
      

  4.   

    那是因为你的结果集多,你就top 10看看吧
      

  5.   

    快捷方式:
    右键绿色那行字,然后选择【缺少索引xxx】那个,就会在新界面产生一个脚本,你把索引名改改就执行一下。把8楼中,排名前10~20的都这样做,然后再看看效果
      

  6.   

    也不算,主要是先使用优化器给出的建议,你看你截图那个执行计划,理论上可以提高91%的性能。而且可能主要由于缺失索引,到时并行操作很多,CXPACT这个等待状态居首位(也就是4楼的图)
      

  7.   

    不是实时的,读的是缓存的数据。你直接执行那个查询,对比一下效果
    步骤1:先保存缺少索引的定义,然后删除那个新加的索引,执行你的查询
    步骤2:加上缺少索引,然后再执行语句。如果不明显,ctrl+m,然后执行查询,单独贴图上来看看。另外引用一下回复
      

  8.   

    查看下服务器性能分析器吧,看看是CPU、内存还是硬盘读写的问题,再对症下药