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

希望有一种更有效的方法在ASP中使用SQL进行多重查询,sql,asp-classic,Sql,Asp Classic,因此,我对同一个表进行了两个查询。查询工作正常,但返回的结果有点慢。我还使用了两个不同的变量(装运和计数) 有没有更好的方法在使用不同变量的同时组合多个查询,而不是在每次查询时打开一个新连接 <% Set rscount11 = Server.CreateObject("ADODB.Recordset") sql = "SELECT Count FROM DivisionNew WHERE JMS_UpdateDateTime >= DATEADD(day,-7, GETDATE

因此,我对同一个表进行了两个查询。查询工作正常,但返回的结果有点慢。我还使用了两个不同的变量(装运和计数) 有没有更好的方法在使用不同变量的同时组合多个查询,而不是在每次查询时打开一个新连接

 <% 
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")

 %>

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

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

SELECT Count(*) FROM DivisionNew WHERE ...

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

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

SELECT Count(*) FROM DivisionNew WHERE ...

为什么不在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")

%>

为什么不在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")

%>


仍在考虑是否有方法组合查询。@Jimmy我肯定遗漏了什么,但您的两个查询之间有什么区别?另外,您可以删除ORDER BY子句以提高性能,如果您返回的是单行,则无论如何都不需要该子句。Declan,我刚刚更新了我的代码示例。第一个查询是从“计数”列中进行选择,而第二个查询是从“发货”列中进行选择。使用一个带有两个字段的数据集
SELECT Count,shipping from…
如果我使用“SELECT TOP 1”并删除“ORDER BY”,我将始终获得最新记录,即使在我查询数据的列中有多条记录?仍在考虑是否有方法组合查询。@Jimmy我肯定遗漏了什么,但您的两个查询之间有什么区别?另外,您可以删除ORDER BY子句以提高性能,如果您返回的是单行,则无论如何都不需要该子句。Declan,我刚刚更新了我的代码示例。第一个查询是从“计数”列中进行选择,而第二个查询是从“发货”列中进行选择。使用一个带有两个字段的数据集
SELECT Count,shipping from…
如果我使用“SELECT TOP 1”并删除“ORDER BY”,我将始终获得最新记录,即使在我查询数据的列中有多条记录,我认为它是一个字段,而不是聚合?另外,您是否考虑过DB中的性能是否较慢?而
索引
等?我认为
计数
是一个字段,而不是聚合?另外,您是否考虑过DB中的性能是否较慢?还有
索引
等等?啊,我忽略了这一点。我做了改变。很好!谢谢,我忽略了这一点。我做了改变。很好!谢谢