1

パフォーマンスが非常に重要な問題であるアプリケーションがあります。このアプリケーションには、多くの検索を行う 50.000 人のユーザーがいます。現在、国コードを char(2) として users テーブルに保存し、countries php 配列から国を取得します。

$countries = array("AF"=>"Afghanistan","AL"=>"Albania",...)

私はさらに約6つの属性で同様のことを行い、それらのすべてに同様の数の値があります。結合が不要なため、これは便利です。

パフォーマンスについてだけ言えば、国名やその他の属性を配列に格納し続けるか、各属性を各コードの名前が格納される別のテーブルと結合するかのどちらがより高速でしょうか?

4

4 に答える 4

2

それは本当にあなたのパフォーマンスのボトルネックがどこにあるかに依存します。データベースに適切なインデックスを持つ適切なテーブルがある場合、DBはデータを適切かつ迅速に返します。ただし、破壊されているのがDBである場合、それは良くない違いを生む可能性があります。

一方、サーバーのCPUサイクルが非常に高く、常に最大になっている場合は、DBに参加を処理させます。考慮すべきもう1つのことは、メモリの使用です。国コードを含む配列は大きなものではありませんが、製品のリストを含む配列は、RAMを消費する可能性があります。また、同時ユーザーが多い場合は、パフォーマンスには良くないかもしれません。

于 2012-07-17T08:17:20.120 に答える
0

配列は高速ですが、データセットが大きいと、より多くのメモリを消費します。これは、あなたの場合には当てはまりません;)

于 2012-07-17T08:18:38.953 に答える
0

状況と言及した他の6つの値に完全に依存する別のオプションがあります。そのデータが国のリストと同じくらい静的である場合は、データをファイルにキャッシュすることを検討してください。

if( some simple validation is true ){
include "EN.php" ;
}
echo $country;

そこから変数にアクセスします。APC などの何らかの種類の memcache がオンになっている場合に適しています。

于 2012-07-17T08:23:06.670 に答える
0

それらを配列に保持し、結合を回避することは、絶対に最高のパフォーマンスです。

于 2012-07-17T08:17:03.557 に答える