Html 链接到SQL2000的网页-完全加载时间过长

Html 链接到SQL2000的网页-完全加载时间过长,html,sql,web,asp-classic,vbscript,Html,Sql,Web,Asp Classic,Vbscript,我有一个内部网页,它连接到SQL2000数据库,提取数据,然后将其显示在表上。SQL查询平均需要3秒钟才能获得完整结果(在本例中为59行) 然后,我将这些结果显示在一个表中,使用do/while循环和if语句将结果过滤到应该显示在表中的位置-问题是,每个结果都需要额外的3秒钟才能显示-因此,完整的网页需要大约3.5分钟才能完全加载(我不得不延长超时时间以允许完全加载) 我需要把这段时间缩短到一个可用的时间 web服务器是Windows IIS,网页是基本的html、经典的asp和一些VB。 It

我有一个内部网页,它连接到SQL2000数据库,提取数据,然后将其显示在表上。SQL查询平均需要3秒钟才能获得完整结果(在本例中为59行)

然后,我将这些结果显示在一个表中,使用do/while循环和if语句将结果过滤到应该显示在表中的位置-问题是,每个结果都需要额外的3秒钟才能显示-因此,完整的网页需要大约3.5分钟才能完全加载(我不得不延长超时时间以允许完全加载)

我需要把这段时间缩短到一个可用的时间

web服务器是Windows IIS,网页是基本的html、经典的asp和一些VB。 It服务器也安装了PHP,但我不确定是哪个版本

我把文件放在一个ZIP里,供任何人查看

那么,伙计们……我该怎么做才能让这个页面在一个时间尺度上加载,使它真正可用


此处显示了页面的可查看版本
http://195.171.121.111/week0909-test.asp
我将在那里停留一天左右。

where和order by子句中的用户定义函数可能导致SQL的速度减慢


您应该能够提取一次查询数据,然后在内存中建立团队和日期的哈希。另一个哈希应该包含团队和日期之间交叉哈希的条目列表,然后您可以只在数据集上迭代一次,而不是(team-names.count*Dates.count)时间。

您能在没有dbo.dateonly函数的情况下测试您的查询吗?改用Scheduled\u Date\u Time字段。我怀疑这个UDF会导致您的问题。这大大提高了速度,但是我的IF语句现在不起作用,因为Scheduled\u Date\u Time不再是日期,而是现在还包括了一个随时间而变化的时间g在工作中。那么我如何补偿呢?只在select子句中尝试函数,而不是在where或order by子句中,以查看性能是否严重下降。我怀疑where或order by子句中的函数影响最大。是的,是where子句中的函数减慢了它的速度。有没有将其保留在SELECT子句中,速度提高了很多。这将加载速度从3m 30s提高到了58s。不过,可能还需要进一步提高。确定删除dbo.dateonly函数将加载速度从3m 30s提高到了58s。可能还需要进一步提高。不知道内存哈希我们的想法是:(在这里从内存中工作,因此为任何语法错误节省一些时间)刚刚发现dates数组是错误的(设置为八月日期),将其更改为正确的日期,现在显示数据,但是应该在thrusday列中的数据在friday列中,现在已经对其进行了排序,似乎加载速度非常快!
select Call_Ref, per_data7, dbo.dateonly(Scheduled_Date_Time) as sched_date, Call_Status_Description, Add1, Add2, Post_Code, contract_short_name, Call_Type_Description, LUCFC_Description, sched_colour_code
from Calls with (nolock)
    inner join Clients with (nolock) on Link_to_Client=Client_Ref
    left join Personnel with (nolock) on Last_Allocated_To=Pers_Ref
    left join LU_Call_Types with (nolock) on Call_Type=Call_Type_Code
    left join Personnel_More with (nolock) on Last_Allocated_To=PER_Link_to_Pers_Ref
    left join LU_Call_Fault_codes with (nolock) on call_fault_code_1=LUCFC_Code
    left join LU_Call_Status with (nolock) on Last_Event_Status=Call_Status_Code
    left join call_more on call_ref=callm_link_to_call
    left join contractids on link_to_contract_header=contract_ref
where dbo.dateonly(Scheduled_Date_Time) between '09/09/2013' and '13/09/2013'
    and Call_Type in ('BC','IN')
    and PER_Data7 in ('Team 1','Team 2','Team 3','Team 4','Team 5','Team 6','Team 7','Team 8','Team 9','Team 10','Gas1')
    and Call_Status_Description in ('Allocated','Reported Done','Complete')
or CALLM_Data21 between '19/08/2013' and '23/08/2013'
    and CALLM_Data22 in ('Team 1','Team 2','Team 3','Team 4','Team 5','Team 6','Team 7','Team 8','Team 9','Team 10','Gas1')
    and link_to_contract_header = 'BGAS-1'
    and call_type not in ('BC','IN')
    and call_status_description not in ('Cancelled')
order by per_data7, dbo.dateonly(Scheduled_Date_Time)