0

mysqlデータベースに大きなテーブルがあります(600万レコード)。テーブルをリンクすると、問題なく開くことができます。アクセスが必要に応じてレコードを要求しているようです。ただし、パススルークエリを使用すると、アクセスがテーブルを開く前にテーブル全体を要求しているように見えます。これは私の通常のテーブル(200,000)のレコードでは十分に遅いですが、大きなものは不可能です。パススルーを使用してSQLステートメントを使用できるようにしたいのですが、高速化する必要があります。これを行う方法はありますか?ありがとう!

編集: これがクエリです。これよりも簡単にすることはできません。 SELECT * FROM Traffic12

4

1 に答える 1

3

クエリはテーブル全体を要求しています。Accessは、あなたが指示していることを正確に実行しています。パススルークエリを使用するのは、WHERE句(フィルタリング)をサーバーで実行する場合、または結合をサーバーで行う場合、またはサーバー側の機能(サーバーなど)を利用する場合のみです。 UDF)、またはバックエンドサーバーが理解できる「ヒント」を追加する場合。

ptクエリを使用しない場合に気付く明らかなパフォーマンス上の利点は、Accessが一度に特定の数の行のみをフェッチすることによるものです。ただし、パススルーを使用する場合は、ページングアルゴリズムからこの最適化をバイパスしています。

フィルタリングがサーバー側で行われる場合、パススルークエリは、非ptよりも帯域幅を大幅に節約できるため、非パススルーに比べてパフォーマンスが大幅に向上する可能性があります。または、バックエンドが膨大な量のRAMを備えた巨大な4 CPUマシンであり、大きなインデックスを瞬時に処理できる場合もあります。すべての要因を考慮に入れて、どのアプローチがより優れているかを確認するには、状況を評価する必要があります。

于 2011-01-13T13:32:30.893 に答える