日期:2014-05-17  浏览次数:20642 次

sql server 查询语句 超时问题
现在做一个项目:vs2010 + sql2005 ;数据库一张表里面就有数据1千万左右 ,查询时多张表连接查询,建立索引,速度2s左右,但是每次添加新的数据后,再查询就出现超时现象, 和索引有关系,但是 我也不能每次去建新的索引,!!求高手提个解决方案,分数不是问题!!!
sql?查询超时 sql 查询超时

------解决方案--------------------
这个很有可能是统计信息不准确导致的,而不一定是索引的问题。

建议你更新统计信息:

update statistics 表
------解决方案--------------------
检查一下你的数据库是否开启了自动更新统计信息选项,没有的话就开启
------解决方案--------------------
一般来说,如果很慢,你加了索引就快了,那么应该就不是索引的问题。

而是随着像你说的,有数据添加进去,导致统计信息不够准确,这个和索引关系不大。

你试试上面的更新统计信息,看查询能不能快
------解决方案--------------------
看看你的库这里是不是为false
------解决方案--------------------
你的表是不是碎片太多了。。。。
------解决方案--------------------
看看你那个表上面的碎片情况
SELECT  '[' + DB_NAME() + '].[' + OBJECT_SCHEMA_NAME(ddips.[object_id],
                                                     DB_ID()) + '].['
        + OBJECT_NAME(ddips.[object_id], DB_ID()) + ']' AS [statement] ,
        i.[name] AS [index_name] ,
        ddips.[index_type_desc] ,
        ddips.[partition_number] ,
        ddips.[alloc_unit_type_desc] ,
        ddips.[index_depth] ,
        ddips.[index_level] ,
        CAST(ddips.[avg_fragmentation_in_percent] AS SMALLINT) AS [avg_frag_%] ,
        CAST(ddips.[avg_fragment_size_in_pages] AS SMALLINT) AS [avg_frag_size_in_pages] ,
        ddips.[fragment_count] ,
        ddips.[page_count]
FROM    sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'limited') ddips
        INNER JOIN sys.[indexes] i ON ddips.[object_id] = i.[object_id]
                                      AND ddips.[index_id] = i.[index_id]
WHERE   ddips.[avg_fragmentation_in_percent] > 15
        AND ddips.[page_count] > 500
ORDER BY ddips.[avg_fragmentation_in_percent] ,