আমি নিম্নলিখিত রিকার্সিভ সিটিইকে একটি সর্বনিম্ন উদাহরণ হিসাবে ব্যবহার করছি, তবে সাধারণভাবে, অপ্টিমাইজারটি পুনরাবৃত্ত সিটিইর জন্য ডিফল্ট 'অনুমানযুক্ত' কার্ডিনালিটি ব্যবহার করতে হয়:
with recursive w(n) as ( select 1 union all select n+1 from w where n<5 ) select * from w;
/*
n
---
1
2
3
4
5
*/
explain analyze
with recursive w(n) as ( select 1 union all select n+1 from w where n<5 ) select * from w;
/*
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------
CTE Scan on w (cost=2.95..3.57 rows=31 width=4) (actual time=0.005..0.020 rows=5 loops=1)
CTE w
-> Recursive Union (cost=0.00..2.95 rows=31 width=4) (actual time=0.003..0.017 rows=5 loops=1)
-> Result (cost=0.00..0.01 rows=1 width=0) (actual time=0.001..0.001 rows=1 loops=1)
-> WorkTable Scan on w w_1 (cost=0.00..0.23 rows=3 width=4) (actual time=0.002..0.002 rows=1 loops=5)
Filter: (n < 5)
Rows Removed by Filter: 0
*/
উপরোক্ত পরিকল্পনায় rows=31
আনুমানিক এবং rows=5
প্রকৃত কার্ডিনালিটিগুলি নোট করুন । কিছু ক্ষেত্রে 100 টি অনুমান হিসাবে ব্যবহৃত হয়েছে বলে মনে হয়, অনুমানের পিছনে সঠিক যুক্তি সম্পর্কে আমি নিশ্চিত নই।
আমার আসল বিশ্বের সমস্যায়, দুর্বল কার্ডিনালিটির অনুমানটি দ্রুত 'নেস্টেড লুপস' পরিকল্পনাটি বাছাই করা থেকে বাধা দিচ্ছে। পুনরাবৃত্ত সিটিই এর আশেপাশে কাজ করার জন্য আমি কীভাবে 'ইঙ্গিত' করতে পারি the
COST
ফাংশন উপর, কিন্তু না অনেক অন্য। আমি এটি পিএএসকিউএল-হ্যাকারদের উত্থাপনের পরামর্শ দিচ্ছি, তবে আপনি কেবল "ইঙ্গিত" বিতর্কের নবীন পুনরাবৃত্তিতে জড়িয়ে পড়বেন, প্রচণ্ড গরম বাতাসকে নষ্ট করে কিছু অর্জন করবেন না :-(