MySQL の LIKE 句を使用する代わりに、独自のアルゴリズムを使用して、データベースから取得したデータをフィルター処理したいと考えています...しかし、大量のデータを使用するアプリケーションのパフォーマンスに顕著な影響はありますか?
質問する
179 次
3 に答える
2
はい、データベースに処理させるのではなく、常にすべてのデータを取得して並べ替えると、パフォーマンスに大きな影響を与えます。
于 2013-06-02T18:49:09.650 に答える
2
データのフィルタリングと検索は、間違いなく mysql サーバーの仕事です。クライアント側のデータ フィルタリングは決して良い方法ではありません。
LIKE
この句を使用すると、mysql サーバーはデータをフィルタリングしてからクライアント (PHP)に取得します。したがって、 を使用しない場合、転送されるデータの量ははるかに大きくなりますLIKE
。これが最初のパフォーマンスの問題です。
2 つ目の問題は、PHP が大量のメモリ (データ セット全体) を使用することです。
3 番目の問題は、PHP ですべてのレコードに対して必要になるループです。
したがって、それを行わない 3 つの正当な理由があります。句のほかに、 mysqlLIKE
には多くの文字列関数があることに注意してください。それらは適合するはずです。
于 2013-06-02T18:49:12.267 に答える
1
これは非常に悪い考えです。フィルタリングを DBMS システムに残す必要がある理由には、次のようなものがあります。
- DBMS システムは、これらの操作に最適化されています。
- このタイプの操作は、Web サーバーで多くのオーバーヘッドを引き起こします。PHP で数千または数百万の文字列に対して文字列操作を行う必要があると想像してください。これは、DBMS によってすぐに実行されます。
- データベースから Web サーバー、場合によってはブラウザーに大量のデータを転送すると、アプリケーションが大幅に遅くなります。
- 独自の PHP コードでフィルタリングを行うと、バグや論理エラーが発生する可能性がはるかに高くなります。
ですから、DBMS に仕事を任せてください。
于 2013-06-02T19:09:24.913 に答える