PeopleSoft クエリ (Oracle バックエンド データベースを使用) で問題に直面しています。複数のレコードを含むかなり複雑なクエリがユーザーによって設定されると、PS はセキュリティ レコードの結合を強制するため、次のような SQL が生成されます。
select .... from
ps_job a, PS_EMPL_SRCQRY a1, ps_table2 b, ps_sec_rcd2 b1, ps_table3 c, ps_sec_rcd3 c1
ここで、(...セキュリティは a->a1、b->b1、c->c1...) および ( ...a、b、c の結合...) および
a.setid_dept = 'XYZ';
(最後の条件の選択性が高く、列にインデックスがあると仮定します)明らかに、条件の配置により、最初に巨大な結合が作成され、一時セグメントに書き込まれ、最後の条件が最終的に適用されると、小さなサブセットのみが選択されます。このように定式化されたクエリは、APPSRV や QRYSRV の事前設定されたタイムアウトに達する可能性が非常に高くなります。手動でクエリを作成するときは、最も選択的な条件を最初に移動して、処理されるデータの量をかなりのレベルに制限します。
PS をこのように動作させる方法についてのアイデアはありますか? 実際、すでに「Oracle スタイルの」SQL を ANSI SQL に書き直していて、クエリが高速化されているようですが、PS は Oracle スタイルのクエリを記述しています...
よろしくお願いし
ます DBa