0

t_customer私は、 10.000.000 レコードを持つ顧客の大きなテーブルを持っています。

このテーブルからデータを選択する特定の PHP スクリプトを開始し、各顧客に対してアクションを実行する必要があります。

しかし、データを処理するにつれて、SQL 照会の実行がますます遅くなり、Query execution was interrupted.

私のクエリは次のとおりです。

SELECT id, login FROM t_customer WHERE regdate<1370955715 LIMIT 2600000, 100000;

したがって、制限はもはや効果がなく、これについてどうすればよいかわかりません。

PS SELECT ID、login FROM t_customer WHERE regdate<1370955715 LIMIT 2600000, 10;

上記のクエリは 30 秒間実行されます

PSS WHERE 句がなくても同じ結果

4

2 に答える 2

2

では、PHP で 100K レコードを選択していますか? それは悪い考えです。

バッチ サイズを 1Kに下げ、ターゲット セットをページ分割して、それがどうなるかを確認します。インデックスもつけておきましょうregdate。PHP の 100K 配列は... 複雑です。

PHP はスクリプト言語であり、実際には C++ ではありません :) そのため、私はバックグラウンドで重労働を行うワーカーを C++ で記述しています。

于 2013-06-17T08:43:47.750 に答える
0

MySQL は、パーティションと呼ばれる非常に優れた機能を提供します。http://dev.mysql.com/doc/refman/5.1/en/partitioning.html

巨大なデータセットを小さなファイルに自動的に分割できるため、データの操作を大幅に改善できます。RAID と同じですが、SQL の場合:P パーティションの最適な構成に関する SO に関する優れた投稿がありましたが、現時点では見つかりません。

クエリのパフォーマンスが改善されれば、PHP はループと配列を処理する時間がすぐに増えるはずです。

于 2013-06-17T08:51:59.547 に答える