1

49605key=>valueペアの巨大な配列を初期化しています)(配列は二度と変更されません)$ boardkey_to_values = Array(97031 => 0,97531 => 1,409531 => 2,410031 => 3,410131 => 4、 472031 => 5,472531 => 6,472631 => 7,472651 => 7,484531 => 8,485031 => 9,485151 => 10,485131 => 10、...)

コンパイラにとってこれにはかなりの時間がかかります(平均40ms)

もっと速い解決策になるのではないかと思いました。

プログラムでキーの大きなサブセット(15〜35k)を使用しています。以前はwhere_inでMySQLを使用していましたが、さらに低速で(平均6秒)、ハードコーディングするようにアドバイスされました。実際、はるかに高速ですが、さらに最適化したかったのです。元の投稿を参照してください文字列と値の比較MySQLクエリの最適化

4

1 に答える 1

4

このような大規模なアレイの場合、40ミリ秒はそれほど遅くはありません。ただし、これがWeb上にあり、複数の人がPHPページを呼び出している場合は、サーバーの速度が低下する可能性があります。いくつかのオプションがあります。

  • 複数のAjax呼び出しを使用して、ページがレンダリングされた後、つまり数秒ごとに10000のセットを配列に入力します(このようにして、ページで他の処理を実行し、配列を独自の時間に入力させることができます)

  • データベースを配列に格納するよりも検索/更新する方が高速であるため、データベースを使用してください。

  • プログラムロジックを変更して、49Kの値ではなく、一度にいくつかの値でのみ機能するようにします。(ページごとにデータのサブセットのみが表示される、ページネーションのようなもの)

于 2013-02-25T09:45:23.673 に答える