2
約15k +エントリの.mdbファイルを処理しようとしています。私は、データベースを照会するvbscriptとASPでADOを使用しています。私が作成しているクエリは、このようなものに見えます。この場合のxは、現在の日付をmm/dd/yyyy
という形で保持する変数に過ぎません。アクセスクエリーが長すぎます
rs.Open "SELECT [Item Number], [Qty], [Delivery Point]
FROM [ItemBoard]
WHERE format([Submitted Date/Time], 'mm/dd/yyyy') = '"&x&"'
AND [OrderUrgency] = 'Rush'
AND ([Delivered] is NOT NULL OR [Delivered Short] is NOT NULL)", conn
私の問題は、このクエリがあまりにも高くなる、完了するまでに1分の上向きを取ることです。さらに、Where句を3つすべてではなく3つのうちの1つだけに変更すると、クエリの完了までの時間が約50-55秒に短縮されます。データベース自体の構造以外にも、この問題の原因の候補はありますか?
WHERE形式([投稿日時]、 'mm/dd/yyyy')= 'で、dbエンジンは' [投稿日時] 'に索引検索を使用できません。そのフィールドが日付/時刻データ型の場合は、文字列比較ではなく日付比較を行い、フィールドがインデックスされていることを確認してください。十分でない場合は、 'x'が何であるかを見せてください。 – HansUp
@ハンスアップ私は自分の投稿でxに明確化を追加することができますし、確かにこの改善を行うでしょうが、上記のようにwhere節から除外しても50-55秒の完了時間が得られます。 – Naiya55
Aha。あなたが「3つの文章のうちの1つしか持っていない」と言ったとき、あなたはどちらの言葉を言っていませんでした。次に、[[提出日時] =日付() 'を使用し、[[提出日時]]と[[OrderUrgency]]の両方が索引付けされていることを確認します。これで十分でない場合、私はADOからDAOに切り替えるでしょう。 – HansUp