2

MySQlデータベースから(PHPを使用して)200レコードをフェッチしようとしているため、サーバーの動作が遅くなっています。これらは私が表示する必要のある投稿であり、これが私のエラーであることを知っています。1つのレコードをフェッチしようとすると高速で、200のレコードは非常に遅くなるからです。

これは既知の問題ですか?あまりにも多くのエントリをフェッチすると問題が発生しますか?

4

4 に答える 4

1

PHP コードは、レコードごとに毎回ループする複雑な関数でなければなりません。したがって、200回実行する必要があります..それにより、ページの応答時間が遅くなります. MYSQL で 200 レコードを取得することはまったく問題ありません。MySql ターミナルで実行すると、すぐに実行されます。

于 2012-10-03T10:34:15.950 に答える
1

サーバーの速度が低下する可能性が 3 つあります。

  1. データベースが最適化されていません。データベースを最適化すると、パフォーマンスが大幅に向上します
  2. あなたのクエリは何か間違っています。200 行を取得するには、実行しているクエリを確認する必要があります。
  3. ループ内の各行に対して個別のクエリを実行しています。

私が提案するのは、これに基づいてクエリを実行することです。

SELECT フィールド FROM テーブル WHERE 条件 = 必須条件 LIMIT 200

また、そのクエリの実行が遅い場合は、Explain を実行して、使用しているインデックスを確認します

EXPLAIN SELECT fields FROM テーブル WHERE 条件 = 必須条件 LIMIT 200

200行を取得するには数ミリ秒かかるため

于 2012-10-03T11:42:42.823 に答える
0

テーブルに保存できるレコードの数、取得できるレコードの数。

for unsigned int largest value is 4,294,967,295
for unsigned big int largest value is 18,446,744,073,709,551,615

レコードにすばやくアクセスするには、クエリで LIMIT を定義する必要があります。

于 2012-10-03T10:35:40.377 に答える
0

表示に必要なレコードをフェッチする必要があります。(単純な) 計算のためにレコードをフェッチしないでください。これはクエリで実行できます。

50 ~ 100 件のレコードを表示することは、ユーザーの脳がスキャンしてレコード内のすべての情報を取得できる最大数であると言えます。

私は例外です。15 件以上のレコードを見ると、脳が傾きます :)

于 2012-10-03T10:45:57.870 に答える