إنشاء عرض بطيء بشكل لا يصدق عند استخدام تجميع السلسلة ، أي اقتراحات أداء؟
-
22-09-2019 - |
سؤال
لقد حصلت على مجموعة من المشاهدات الملموسة ، بعضها يستغرق بضع ثوانٍ فقط لإنشاء وتحديث ، في حين يمكن للآخرين أن يأخذوني ما يصل إلى 40 دقيقة للتجميع ، إذا لم يصطدم SQLDeveloper قبل ذلك.
أحتاج إلى تجميع بعض الأوتار في استعلامي ، ولدي الوظيفة التالية
create or replace
function stragg
( input varchar2 )
return varchar2
deterministic
parallel_enable
aggregate using stragg_type
;
ثم ، في MV الخاص بي ، استخدم عبارة محددة مثل
SELECT
hse.refno,
STRAGG (DISTINCT per.person_name) as PERSONS
FROM
HOUSES hse,
PERSONS per
هذا رائع ، لأنه يعطيني ما يلي:
refno persons
1 Dave, John, Mary
2 Jack, Jill
بدلاً من :
refno persons
1 Dave
1 John
1 Mary
2 Jack
2 Jill
يبدو أنه عندما أستخدم هذا STRAGG
الوظيفة ، يزداد الوقت الذي يستغرقه إنشاء/تحديث MV بشكل كبير. هل هناك طريقة بديلة لتحقيق قائمة منفصلة من القيم؟ أستخدم هذا في جميع أنحاء MVS ، لذا فهي ميزة مطلوبة بالنسبة لي
شكرًا
المحلول
هناك عدد من التقنيات لتجميع السلسلة في الرابط أدناه. قد يوفرون أداء أفضل لك.
http://www.oracle-base.com/articles/misc/stringaggregationtechniques.php
لا تنتمي إلى StackOverflow