質問

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

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

役に立ちましたか?

解決

あなたのクエリはテーブル全体を求めています。アクセスは、あなたがそれをするように言っていることを正確にやっています。パススルークエリを使用する唯一の時間は、サーバー上でwhere句(フィルタリング)を実行するか、サーバー上で作成されるか、サーバー側の機能を利用している場合です( UDF)またはバックエンドサーバーが理解する「ヒント」を追加したい場合。

PTクエリを使用していない場合に気付くパフォーマンスの利点は、一度に特定の数の行のみを取得するアクセスから得られます。ただし、パススルーを使用すると、この最適化をページングアルゴリズムからバイパスしています。

フィルタリングがサーバー側に行われると、パススルークエリは非PTよりも帯域幅ではるかにpar約的になる可能性があるため、非パススルーと比較して大きなパフォーマンスの向上をもたらす可能性があります。または、バックエンドは、膨大な量のRAMを備えた巨大な4-CPUマシンであり、フラッシュで大きなインデックスをかき混ぜることができます。どのアプローチがすべての要因を考慮に入れているかを確認するには、状況を評価する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top