إنشاء عرض بطيء بشكل لا يصدق عند استخدام تجميع السلسلة ، أي اقتراحات أداء؟

StackOverflow https://stackoverflow.com/questions/2325390

سؤال

لقد حصلت على مجموعة من المشاهدات الملموسة ، بعضها يستغرق بضع ثوانٍ فقط لإنشاء وتحديث ، في حين يمكن للآخرين أن يأخذوني ما يصل إلى 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top