所以我对同一个表进行了两次查询。查询有效但我的结果有点慢。我也使用两个不同的变量(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")
%>
答案 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")
%>