Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 服务器移动后,查询将不会';我不再工作了_Sql_Asp Classic_Sql Server Express - Fatal编程技术网

Sql 服务器移动后,查询将不会';我不再工作了

Sql 服务器移动后,查询将不会';我不再工作了,sql,asp-classic,sql-server-express,Sql,Asp Classic,Sql Server Express,我需要一些帮助来解决一个让我发疯的问题 我已将ASP+SQL Server应用程序从旧服务器移动到新服务器 旧的是带有MSDE的Windows 2000服务器,新的是带有SQL server 2008 Express的Windows 2008 一切都正常,甚至快了一点,除了一个该死的函数,它的asp页面会超时 我在管理查询窗口中尝试了该页面中的查询,但查询从未结束,而在旧服务器中,完成查询大约需要1分钟 查询如下: SELECT DISTINCT TBL1.TBL1_ID,

我需要一些帮助来解决一个让我发疯的问题

我已将ASP+SQL Server应用程序从旧服务器移动到新服务器

旧的是带有MSDE的Windows 2000服务器,新的是带有SQL server 2008 Express的Windows 2008

一切都正常,甚至快了一点,除了一个该死的函数,它的asp页面会超时

我在管理查询窗口中尝试了该页面中的查询,但查询从未结束,而在旧服务器中,完成查询大约需要1分钟

查询如下:

SELECT DISTINCT 
    TBL1.TBL1_ID, 
    REPLACE(TBL1_TITOLO, CHAR(13) + CHAR(10), ’ ’), 
    COALESCE(TBL1_DURATA, 0), TBL1_NUMERO, 
    FLAG_AUDIO 
FROM 
    SPOT AS TBL1 
INNER JOIN 
    CROSS_SPOT AS CRS ON CRS.TBL1_ID = TBL1.TBL1_ID 
INNER JOIN 
    DESTINATARI_SPOT AS DSP ON DSP.TBL1_ID = TBL1.TBL1_ID 
WHERE 
    DSP.PTD_ID_PUNTO = 1044 
    AND DSP.DSP_FLAG_OK = 1 
    AND TBL1.FLAG_AUDIO_TESTO = 1 
    AND TBL1.FLAG_AUDIO_GRAFICO = ’A’ 
    AND CRS.CRS_STATO > 2 
    OR TBL1.TBL1_ID IN (SELECT ID 
                        FROM V_VIEW1 
                        WHERE ID IS NOT NULL AND V_VIEW1.ID_MODULO = 403721) 
    OR TBL1.TBL1_ID IN (SELECT TBL1_ID 
                        FROM V_VIEW2 
                        WHERE V_VIEW2.ID_PUNTO = 1044)  
ORDER BY 
    TBL1_NUMERO 
我尝试将最后一行中的两个视图转换为表,查询工作正常,即使比以前慢了一点

我已经迁移了数据库的备份/恢复功能。这可能是一个问题吗? 有什么建议吗

提前谢谢

亚历山德罗跑:

--Defrag all indexes
sp_msForEachTable 'DBCC DBREINDEX (''?'')'

--Update all statistics
sp_msForEachTable 'UPDATE STATISTICS ? WITH FULLSCAN'
如果这不能“解决问题”,那么SQL Server优化器中的一些细微的“改进”会让事情变得更糟

尝试索引优化向导(或任何与SSMS2008等效的工具)

在此之后,您必须开始分离查询,删除内容,直到它快速运行。由于您有2个
子句,因此基本上有3个单独的查询:

SELECT ... FROM ...
WHERE DSP.PTD_ID_PUNTO = 1044 
AND DSP.DSP_FLAG_OK = 1 
AND TBL1.FLAG_AUDIO_TESTO=1 
AND TBL1.FLAG_AUDIO_GRAFICO=’A’ 
AND CRS.CRS_STATO>2 

--UNION

SELECT ... FROM ...
WHERE TBL1.TBL1_ID IN (
   SELECT ID 
   FROM V_VIEW1 
   WHERE ID IS NOT NULL 
   AND V_VIEW1.ID_MODULO = 403721
) 

--UNION 

SELECT ... FROM ...
WHERE TBL1.TBL1_ID IN (
   SELECT TBL1_ID 
   FROM V_VIEW2 
   WHERE V_VIEW2.ID_PUNTO = 1044
)  
看看哪一个是最慢的


p、 在美国,一个需要一分钟的查询是相当糟糕的。我的意见是,查询应该立即返回(在人类观察的范围内)

如果没有查询计划、模式甚至数据等非常具体的细节,就不可能回答这个问题。我建议您阅读有关查询优化的一般内容。建议您从查询计划开始。这些索引视图是在旧服务器上创建的,现在是否已编制索引?