かなり大きなWebサイトを構築しているときにSilverStripeがデータベースの使用状況を見て、適切に拡大縮小できるようにしたいと考えました。単純なページのデータベース読み込み
私は現時点では非常に単純なページを持っていますが、それを構築するためにいくつかの質問があったのは間違いありません。私は、データベースにログオンして、何が要求されているかを確認しました。私は(私が行うもの)は問題かもしれないと思った
クエリは、その多くの場合ではありませんが、データベースは次のように約50のクエリがあります。
SELECT conname,pg_catalog.pg_get_constraintdef(r.oid, true)
FROM pg_catalog.pg_constraint r WHERE r.contype = 'c' AND conname = $1 ORDER BY 1;
約10 SiteTreeためのクエリと約10をメンバーのために今は問題ではありませんが、各ページに約100のクエリがロードされている場合(これらのクエリの上に他のクエリがある場合)、私は起動時にいくつかの問題が生じるでしょう。
これらのすべてのクエリの原因は何ですか?私はそれらを下げるために何か、特に上のものをすることができますか?私がしなければ
また、:
$data = DataObject::get()->filter('field1' => 'value1');
if ($data->exists()) {
$one = $data->filter('field2' => 'value2');
// do something
$two = $data->filter('field2' => 'value3')->First();
echo $two->Has_One_Field()->Field //accessing a has_one relationship
//do something
}
は、その結果は4つのクエリまたはちょうど1及び2つの他のフィルタにちょうど、すでに生産されてDataList
のthatsを検索しているのだろうか?
私には早すぎる最適化とよく似ています。これらのクエリをパフォーマンスのボトルネックと特定/テストしましたか? – bummzack
@bummzackいいえ、パフォーマンスが非効率性に基づいて構築されている可能性があります。 – Rudiger