5

私の質問が少し漠然としていることは承知していますが、国/アドレスを管理することは実際にはかなり一般的なことだと思うので、実際のセットアップについてアドバイスを求めたいと思います.

「国」列を持つデータベースがあります。以前は中程度の int 型で、国に関する実際の情報 (主に ID、名前、ISO3166-1 alpha2 コード) を含む別のテーブルへの外部キーとして機能していました。

いくつかのテストとベンチマークの後、必要に応じてそれを含めたり要求したりして、代わりにphpファイル配列にすべての国情報を含めることになり、データベースにクエリを実行するよりも1桁または2桁高速でした. (それらは 278 か国です)。

どうやらそれはより良いアプローチですが、人々は通常、ファイルからではなくテーブルからこの種の読み取りを行う傾向があるため、何か問題があるように感じますが、それが何であるか、維持するのが簡単なのか、それとも簡単なのかわかりませんそんな感じ?

また、数値IDの代わりに2文字のISOコードをキーとして使用することを考えていました. 400.000 行のテーブルで顕著なパフォーマンスの低下は見られませんが、データベースが大きくなるとエラーになりますか?

4

1 に答える 1

2

一般的に、一緒に変化するものは一緒に保ちたいものです。そのため、主要なデータが SQL データベースにある場合、国データをデータベースに保持しておくと、SQL データベースに大量のデータがあることに気付かずに PHP ルックアップ配列を変更するような混乱を避けることができます。

また、重複を避けるのにも役立ちます。システム用に 2 番目のアプリケーション (管理システムなど) を構築する場合、国ルックアップ PHP ファイルのコピーが 2 つになることはありません。繰り返しになりますが、重複によってバグが発生する可能性が生じます。開発者はデータベースとルックアップ ファイルの 1 つを変更し、他のファイルは変更しません。

これらはすべて防御的なものですが、アプリケーションは予想外の方法で進化する傾向があり、通常はバグを回避することをお勧めします。

私の経験では、2 つのテーブル間で結合を使用しても、言及した数値で適切に調整されたシステムで測定可能なパフォーマンスへの影響はほとんどありません。ルックアップを PHP に移動する前に SQL を最適化しましたか?

于 2013-10-21T10:29:27.730 に答える