想要一种更有效的方法在ASP中使用SQL进行多重查询

时间:2013-08-14 16:16:51

标签: sql asp-classic

所以我对同一个表进行了两次查询。查询有效但我的结果有点慢。我也使用两个不同的变量(Shipment_D2和Count_D2) 有没有更好的方法在使用不同变量时组合多个查询,而不是每次进行查询时都打开新连接?

 <% 
Set rscount11 = Server.CreateObject("ADODB.Recordset")
sql = "SELECT Count FROM DivisionNew WHERE JMS_UpdateDateTime >= DATEADD(day,-7, GETDATE()) AND
JMSDay = '" & smDateArray (Weekday(date)) &"' AND Section = 'D2' order by JMS_UpdateDateTime desc" 
rscount11.Open sql, db

Count_D2 = rscount11 ("Count")

%>


 <% 
Set rscount12 = Server.CreateObject("ADODB.Recordset")
sql = "SELECT Shipment FROM DivisionNew WHERE JMS_UpdateDateTime >= DATEADD(day,-7, GETDATE()) AND
 JMSDay = '" & smDateArray (Weekday(date)) &"' AND Section = 'D2' order by JMS_UpdateDateTime desc" 
rscount12.Open sql, db

Shipment_D2 = rscount12 ("Shipment")

 %>

2 个答案:

答案 0 :(得分:3)

如果您需要的只是一个计数,请不要使用select *。您正在将所有记录从数据库传输到内存中,这非常低效。让数据库为您完成工作。

您的第一个查询可以按如下方式重写,其中数据库完成工作,您只需将一个sinlge值检索到内存而不是一个庞大的数据集。使用相同的apporach进行第二次查询。

SELECT Count(*) FROM DivisionNew WHERE ...

答案 1 :(得分:1)

为什么不在SELECT查询中包含这两列?

 <% 
Set rscount11 = Server.CreateObject("ADODB.Recordset")
sql = "SELECT Count, Shipment FROM DivisionNew WHERE JMS_UpdateDateTime >= DATEADD(day,-7, GETDATE()) AND
JMSDay = '" & smDateArray (Weekday(date)) &"' AND Section = 'D2' order by JMS_UpdateDateTime desc" 
rscount11.Open sql, db

Count_D2 = rscount11 ("Count")
Shipment_D2 = rscount11 ("Shipment")

%>