0

そのため、同じテーブルに対して 2 つのクエリを作成しました。クエリは機能しますが、結果が少し遅くなります。また、2 つの異なる変数 (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")

 %>
4

2 に答える 2

3

select *カウントだけが必要な場合は使用しないでください。すべてのレコードをDBからメモリに転送していますが、これは非常に非効率的です. データベースに作業を任せてください。

最初のクエリは次のように書き直すことができます。ここでは、DB が作業を行い、潜在的に巨大なデータセットではなく単一の値をメモリに取得するだけです。2 番目のクエリにも同じアプローチを使用します。

SELECT Count(*) FROM DivisionNew WHERE ...
于 2013-08-14T16:52:41.600 に答える
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")

%>
于 2013-08-14T19:11:26.490 に答える