ঠিক তিনটি স্বতন্ত্র গাইড এবং আরও কিছু দিয়ে ফলাফলটি প্রকাশের কোনও উপায় আছে কি? আমি প্রত্যাশা করছি যে কিছু এসকিউএল সার্ভার সিটিই কিরককে কাটিয়ে উঠতে একাধিকবার রেফারেন্সযুক্ত সিটিই-টাইপ ক্যোয়ারির সাথে প্ল্যান গাইড সহ ভবিষ্যতে আরও ভাল প্রশ্নের উত্তর দিতে সক্ষম হব।
আজ না. অপরিবর্তনীয় সাধারণ টেবিল এক্সপ্রেশনস (সিটিই) অনুকূলকরণের পূর্বে ইন-লাইন ভিউ সংজ্ঞা হিসাবে বিবেচনা করা হয় এবং লজিক্যাল ক্যোয়ারী ট্রিটিতে তাদের যথাযথভাবে উল্লেখ করা হয় (ঠিক নিয়মিত দেখার সংজ্ঞা যেমন হয়) like আপনার প্রশ্নের জন্য যৌক্তিক গাছটি হ'ল:
LogOp_OrderByCOL: Union1007 ASC COL: Union1015 ASC
LogOp_Project COL: Union1006 COL: Union1007 COL: Union1014 COL: Union1015
LogOp_Join
LogOp_ViewAnchor
LogOp_UnionAll
LogOp_Project ScaOp_Intrinsic newid, ScaOp_Const
LogOp_Project ScaOp_Intrinsic newid, ScaOp_Const
LogOp_Project ScaOp_Intrinsic newid, ScaOp_Const
LogOp_ViewAnchor
LogOp_UnionAll
LogOp_Project ScaOp_Intrinsic newid, ScaOp_Const
LogOp_Project ScaOp_Intrinsic newid, ScaOp_Const
LogOp_Project ScaOp_Intrinsic newid, ScaOp_Const
অপ্টিমাইজেশন শুরু হওয়ার আগে দুটি ভিউ অ্যাঙ্কর এবং ছয়টি কলটি আন্তঃনীতিতে ফাংশনটি দেখুন newid
। তবুও, বহু লোক বিবেচনা করে যে অপ্টিমাইজারটি চিহ্নিত করতে সক্ষম হওয়া উচিত যে প্রসারিত উপ-গাছগুলি মূলত একটি একক রেফারেন্সযুক্ত বস্তু ছিল এবং সেই অনুসারে সরলীকৃত হয়েছিল। বেশ কয়েকটি সংযোগের অনুরোধও রয়েছেসিটিই বা উত্পন্ন টেবিলের সুস্পষ্ট উপাদানাদির অনুমতি জন্য অনুরোধও রয়েছে।
আরও সাধারণ বাস্তবায়নের ক্ষেত্রে অপ্টিমাইজারটি পারফরম্যান্সের উন্নতি করতে স্বেচ্ছাসেবী সাধারণ অভিব্যক্তিকে বাস্তবায়িত করার বিষয়ে বিবেচনা করবে ( CASE
একটি সাবকিউয়ের সাথে আজ আরেকটি উদাহরণ যেখানে সমস্যা দেখা দিতে পারে)। মাইক্রোসফ্ট রিসার্চ ২০০ 2007 সালে একটি কাগজ (পিডিএফ) প্রকাশ করেছিল , যদিও তা আজ অবধি কার্যকর নয়। আপাতত, আমরা টেবিল ভেরিয়েবল এবং অস্থায়ী টেবিলের মতো জিনিসগুলি ব্যবহার করে সুস্পষ্ট উপাদানাদির মধ্যে সীমাবদ্ধ।
এসকিউএলকিভি এসএসআইএস-এ পরিকল্পনাগুলি আঁকার কথা উল্লেখ করেছেন, এসকিউএল সার্ভারের জন্য একটি ভাল পরিকল্পনা তৈরিতে সহায়তা করার কোনও উপায় বা দরকারী সরঞ্জাম আছে কি?
এটি আমার পক্ষ থেকে কেবল ইচ্ছাকৃত চিন্তাভাবনা ছিল , এবং পরিকল্পনার নির্দেশিকাগুলি সংশোধন করার ধারণা ছাড়িয়ে যায়। নীতিগতভাবে, শো প্ল্যান এক্সএমএলকে সরাসরি পরিচালনা করার জন্য কোনও সরঞ্জাম লিখন সম্ভব, তবে নির্দিষ্ট অপ্টিমাইজার যন্ত্রটি ব্যবহার না করে ব্যবহারকারীর পক্ষে হতাশার অভিজ্ঞতা হতে পারে (এবং বিকাশকারী এটি ভাবতে পারেন)।
এই প্রশ্নের বিশেষ প্রসঙ্গে, এই জাতীয় সরঞ্জামটি এখনও একাধিক গ্রাহকরা (এক্ষেত্রে উভয় ইনপুটকে ক্রস জোনে খাওয়ানোর জন্য) একাধিক ভোক্তাদের দ্বারা ব্যবহার করা যেতে পারে এমনভাবে সিটিই বিষয়বস্তু বাস্তবায়িত করতে অক্ষম হবে। অপ্টিমাইজার এবং এক্সিকিউশন ইঞ্জিন মাল্টি-কনজিউমার স্পুলগুলিকে সমর্থন করে তবে কেবল নির্দিষ্ট উদ্দেশ্যে - যার কোনওটিই এই বিশেষ উদাহরণটিতে প্রয়োগ করতে পারেনি।
যদিও আমি নিশ্চিত নই, আমার কাছে মোটামুটি শক্তিশালী হান্চ রয়েছে যে ক্যালোয়ারটি পরিকল্পনার ঠিক মতো না হলেও - রিলওপস অনুসরণ করতে পারে (নেস্টেড লুপ, অলস স্পুল) - উদাহরণস্বরূপ যদি আপনি সিটিইতে 4 এবং 5 যোগ করেন , এটি এখনও একই পরিকল্পনা ব্যবহার করা অব্যাহত রেখেছে (আপাতদৃষ্টিতে - এসকিউএল সার্ভার 2012 আরটিএম এক্সপ্রেসে পরীক্ষিত)।
এখানে যুক্তিসঙ্গত পরিমাণে নমনীয়তা রয়েছে। এক্সএমএল পরিকল্পনার বিস্তৃত আকারটি একটি চূড়ান্ত পরিকল্পনার অনুসন্ধানের জন্য গাইড করতে ব্যবহৃত হয় (যদিও অনেকগুলি বৈশিষ্ট্য পুরোপুরি উপেক্ষা করা হয় যেমন এক্সচেঞ্জগুলিতে পার্টিশন টাইপ) এবং সাধারণ অনুসন্ধানের নিয়মগুলিও যথেষ্ট স্বাচ্ছন্দ্যযুক্ত। উদাহরণস্বরূপ, ব্যয় বিবেচনার ভিত্তিতে বিকল্পগুলির প্রাথমিক ছাঁটাই নিষ্ক্রিয় করা হয়েছে, ক্রস যোগদানের সুস্পষ্ট পরিচয় অনুমোদিত এবং স্কেলার অপারেশনগুলি উপেক্ষা করা হবে।
সেখানে গভীরতা ঢোকা অনেকগুলি বিবরণ আছে, কিন্তু ফিল্টার এবং কম্পিউট Scalars বসানো বাধ্য করা যাবে না, এবং ফর্মটির predicates column = value
তাই একটি পরিকল্পনা ধারণকারী সাধারণ করছে X = 1
বা X = @X
ধারণকারী একটি ক্যোয়ারী প্রয়োগ করা যেতে পারে X = 502
বা X = @Y
। এই নির্দিষ্ট নমনীয়তা জোর করার জন্য একটি প্রাকৃতিক পরিকল্পনা সন্ধানে ব্যাপক সাহায্য করতে পারে।
নির্দিষ্ট উদাহরণে, ধ্রুব ইউনিয়ন সবসময় একটি কনস্ট্যান্ট স্ক্যান হিসাবে প্রয়োগ করা যেতে পারে; ইউনিয়ন ইনপুট সংখ্যা সব কিছু যায় আসে না।