আমি কীভাবে UNPIVOT কে সমস্ত ইউনিয়ন রূপান্তরিত হতে বাধা দিতে পারি?


13

আমার কিছুটা জটিল ওরাকল ক্যোয়ারী রয়েছে যা সম্পূর্ণ হতে প্রায় আধ ঘন্টা সময় নিচ্ছে। আমি যদি ক্যোয়ারির ধীর অংশটি নিয়ে আলাদাভাবে চালিত করি তবে এটি কয়েক সেকেন্ডের মধ্যেই শেষ হয়ে যায়। বিচ্ছিন্ন প্রশ্নের জন্য এসকিউএল মনিটর রিপোর্টের একটি স্ক্রিনশট এখানে দেওয়া হয়েছে:

ঠিক আছে পরিকল্পনা

সম্পূর্ণ ক্যোয়ারির অংশ হিসাবে চালিত হওয়ার সময় এখানে একই যুক্তি রয়েছে:

খারাপ পরিকল্পনা

উভয় স্ক্রিনশটগুলিতে রঙগুলি একই টেবিলের সাথে মিল রয়েছে। ধীর ক্যোয়ারির জন্য, ওরাকল MERGE JOINদুটি সারণীর মধ্যে একটি করছে যা এর মধ্যে সমতার শর্ত নয় JOIN। এর ফলস্বরূপ, প্রায় 150 মিলিয়ন মধ্যবর্তী সারিগুলি অহেতুক প্রক্রিয়াজাত করা হয়।

আমি ক্যোয়ারী ইঙ্গিত বা পুনর্লিখনগুলি নিয়ে এই সমস্যাটি ঘিরে কাজ করতে সক্ষম, তবে আমি যতটা সম্ভব মূল কারণটি বুঝতে চাই তাই ভবিষ্যতে এই সমস্যাটি এড়াতে এবং সম্ভবত ওরাকলে একটি বাগ রিপোর্ট জমা দিতে পারি submit আমি যখনই খারাপ পরিকল্পনা পেয়েছি UNPIVOTতখনই ক্যোয়ারী পাঠ্যের UNION ALLপরিকল্পনাগুলি পরিকল্পনার একটিতে রূপান্তরিত হয় । আরও তদন্তের জন্য আমি এই ক্যোয়ারী রূপান্তরটি ঘটতে বাধা দিতে চাই। আমি এই রূপান্তরটির জন্য কোনও নাম খুঁজে পাচ্ছি না। আমি কোনও ক্যোয়ারী ইঙ্গিত বা আন্ডারস্কোর প্যারামিটারও এটি সন্ধান করতে পারিনি যা এটির প্রতিরোধ করবে। আমি ডেভলপমেন্ট সার্ভারে পরীক্ষা করছি যাতে কিছু যায় না।

কিছু যে আমি এর কোয়েরি রূপান্তর প্রতিরোধ করতে পারি UNPIVOTকরতে UNION ALL? আমি ওরাকল 12.1.0.2 এ আছি।

আইপি কারণে আমি কোয়েরি, টেবিলের নাম বা ডেটা ভাগ করতে পারছি না। আমি একটি সহজ প্রজনন সঙ্গে আসতে সক্ষম ছিল না। এই কথাটি বলে, আমার কাছে এটি অস্পষ্ট যে প্রশ্নের উত্তর দেওয়ার জন্য কেন সেই তথ্য দরকার। এখানে ইউএনআইপিওয়ট ক্যোয়ারির উদাহরণ রয়েছে একই সাথে ইউএনওআইএন সমস্ত হিসাবে প্রয়োগ করা হয়েছে query


1
আপনার উদাহরণ ইউনিয়নে সমস্ত উপস্থিত রয়েছে তাই এটি দেখায়। আমি আমার নিজস্ব ক্যোয়ারী চালিয়েছি যার সমস্ত ইউনিয়ন নেই এবং ব্যাখ্যা করার পরিকল্পনাটি সমস্ত ইউনিয়ন দেখায় না। সুতরাং, সম্ভবত এটি আপনার ক্যোয়ারী এবং আনপিবট অপারেশন নয় যা এখানে সমস্যা তৈরি করছে?
রাজ

@ রাজ কথা হচ্ছে সমস্যাটি আরও সঙ্কুচিত করার জন্য ক্যোরির পাঠ্য পরিবর্তন না করেই সেই রূপান্তরটি অক্ষম করা।
জো ওবিশ

3
আমি বহু বছর ধরে ওরাকল এর সাথে কাজ করছি, তবে মাঝে মাঝে আমার কাছে আপনার কলাম / টেবিলের পরিবর্তে কোয়েরি বা কমপক্ষে সামঞ্জস্যপূর্ণ সিউডো কোয়েরি দেখতে হবে। এগুলি ছাড়া আমি অনুমান করতে পারি তবে এটি আপনার পক্ষে না আমার পক্ষে কার্যকর।
রাজ

উত্তর:


1

নিম্নলিখিত ওরাকল অপ্টিমাইজার ইঙ্গিতটি ব্যবহার করে দেখুন:

NO_EXPAND

এই ইঙ্গিতটি ওআর-প্রসারণ অক্ষম করে। ওআর-প্রসারণ whereবিভাগের সমন্বিত ওআর-শর্তগুলি বা আইএন-তালিকাগুলিকে একটি যৌগিক ক্যোয়ারিতে রূপান্তর করে union all

আমাদের কাছে আপনার এসকিউএল নেই তাই এটি অনুমান তবে এটি একটি কার্যকর বিকল্প হিসাবে মনে হয়।

দ্বিতীয় বিকল্প হিসাবে, যেহেতু আপনি একটি বিকাশের পরিবেশে আছেন, আপনি ওরাকল অপটিমাইজার ইঙ্গিতটি চেষ্টা করতে পারেন:

NO_QUERY_TRANSFORMATION

কিন্তু এই ইঙ্গিতটি নিষ্ক্রিয় সব প্রশ্নের সাথে রূপান্তরের যে অপটিমাইজার পারেন রূপান্তরের যে অপটিমাইজার ছাড়া অন্য সঞ্চালন সবসময় আবেদন করতে পারেন।


বা UNPIVOT এর মতো জিনিস নয়। আপনি কি এমন একটি সাধারণ উদাহরণ তৈরি করতে পারেন যা UNPIVOT এর জন্য কাজ করা NO_EXPAND ইঙ্গিতটি দেখায়? আমি এটি চেষ্টা করেছি এবং এটি আমার পক্ষে কার্যকর হয়নি।
জো ওবিশ

@ জোঅববিশ - আপনি কি ইউএনপিভোটের সাথে আপনার জটিল এসকিউএল-এর একটি ছোট আকারের সংস্করণ সরবরাহ করতে পারেন?
পারলে

1
@ জোওববিশ - অন্য একটি পরামর্শের সাথে আপডেট উত্তর। আশাকরি এটা সাহায্য করবে.
tale852150
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.