دیتابیس اوراکل

optimizer_unnest_scalar_sq_

پنجشنبه, ۷ دی ۱۳۹۶، ۰۸:۳۸ ب.ظ

از اوراکل 12c به بعد ، CBO میتواند بعضی از انواع scalar subqueryها را به صورت internally به outer joinها تبدیل کند. که این ویژگی با یکی از hidden parameterها بنام optimizer_unnest_scalar_sq_ کنترل میشود که مقدار آن به صورت پیش فرض به true ست شده است . این که این ویژگی جدید باعث بهینه تر شدن کوئری های شما میشود یا اوضاع آنها را بدتر میکند کاملا به شرایط سایت شما و کوئری هایی که اجرا میکنید بستگی دارد.

فقط باید این نکته را درنظر بگیرید که این ویژگی در همه موارد برای scalar subqueryها کار نمیکند. یعنی CBO در بعضی موارد ، حتی با وجود اینکه مقدار این پارامتر به true ست شده است ، scalar subqueryها را به join تبدیل نمیکند.


نکته) با استفاده از کوئری زیر، میتوانید مقدار پیش فرض hidden parameterها را در دیتابیس مشاهده کنید.

 select ksppinm, ksppstvl

  from x$ksppi a, x$ksppsv b

where a.indx=b.indx

    and ksppinm = '_optimizer_unnest_scalar_sq';



به مثال های زیر که در هر دو حالت true و false بودن این پارامتر اجرا شده است توجه نمایید:


مثال 1 :


_optimizer_unnest_scalar_sq_1_

_optimizer_unnest_scalar_sq_2_


Final query after CBO transformations :

_optimizer_unnest_scalar_sq_3_



مثال 2 :

_optimizer_unnest_scalar_sq_4_


_optimizer_unnest_scalar_sq_5_


Final query after CBO transformations :

_optimizer_unnest_scalar_sq_6_


n منابع 

  • موافقین ۰ مخالفین ۰
  • ۹۶/۱۰/۰۷
  • ۱۵۳ نمایش
  • راهله شاکری

optimizer_unnest_scalar_sq_

نظرات (۱)

  • مهدی غفاری
  • بسیار عالی بود مهندس
    پاسخ:
    ممنون 
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    تجدید کد امنیتی