Recursive Queries হল SQL কুয়েরি যা নিজেই নিজেকে পুনরাবৃত্তি (recursion) করে, বিশেষত হায়ারার্কিক্যাল বা পারিবারিক সম্পর্কিত ডেটা অনুসন্ধান করতে। DB2-তে Recursive Queries সাধারণত Common Table Expressions (CTE) এর মাধ্যমে লেখা হয়। এই ধরনের কুয়েরি সাধারণত হায়ারার্কিক্যাল ডেটা, যেমন অর্গানাইজেশনাল চার্ট, পারিবারিক বৃক্ষ বা বিভিন্ন স্তরের ক্যাটেগরি ডেটা অনুসন্ধানে ব্যবহৃত হয়।
DB2-তে Recursive Query তৈরি করার জন্য WITH RECURSIVE ক্লজ ব্যবহার করা হয়। একটি Recursive Query দুটি অংশে ভাগ হয়:
WITH RECURSIVE <CTE_name> AS (
-- Anchor member
<initial_query>
UNION ALL
-- Recursive member
<recursive_query>
)
SELECT * FROM <CTE_name>;
এখানে:
ধরা যাক, একটি Employee টেবিল আছে যেখানে EmployeeID, ManagerID, এবং EmployeeName কলাম রয়েছে, এবং আমরা এই টেবিলের ভিত্তিতে একটি হায়ারার্কিক্যাল অর্গানাইজেশন চার্ট তৈরি করতে চাই।
EmployeeID | EmployeeName | ManagerID |
---|---|---|
1 | Alice | NULL |
2 | Bob | 1 |
3 | Charlie | 1 |
4 | David | 2 |
5 | Eve | 2 |
এই টেবিলের জন্য, আমরা Recursive Query ব্যবহার করে এমন একটি কুয়েরি তৈরি করব যা Alice (ম্যাংগার) থেকে শুরু করে পুরো হায়ারার্কি বের করবে।
WITH RECURSIVE EmployeeHierarchy AS (
-- Anchor member: Select the root employee (Alice)
SELECT EmployeeID, EmployeeName, ManagerID
FROM Employee
WHERE EmployeeID = 1 -- Starting with Alice (EmployeeID 1)
UNION ALL
-- Recursive member: Select employees managed by the previous level
SELECT e.EmployeeID, e.EmployeeName, e.ManagerID
FROM Employee e
INNER JOIN EmployeeHierarchy eh
ON e.ManagerID = eh.EmployeeID
)
SELECT * FROM EmployeeHierarchy;
EmployeeID | EmployeeName | ManagerID |
---|---|---|
1 | Alice | NULL |
2 | Bob | 1 |
3 | Charlie | 1 |
4 | David | 2 |
5 | Eve | 2 |
এখানে:
DB2-তে Default ভাবে একটি Recursive Query-তে 100 লেভেল (স্তর) পর্যন্ত ডেটা পুনরাবৃত্তি করা হয়। তবে, এটি পরিবর্তন করা যায়:
SET CURRENT RECURSION LIMIT 500;
DB2-এ Recursive Queries ব্যবহার করা হয় বিশেষত যখন ডেটা হায়ারার্কিক্যাল বা পারিবারিক সম্পর্কিত থাকে। WITH RECURSIVE কুয়েরি স্টেটমেন্ট ব্যবহার করে, আপনি ডেটার বিভিন্ন স্তরের উপর ভিত্তি করে কুয়েরি করতে পারেন। এর মাধ্যমে অর্গানাইজেশন চার্ট, পারিবারিক বৃক্ষ বা ক্যাটেগরি হায়ারার্কির মতো ডেটা সহজে বের করা যায়। তবে, পারফরম্যান্স উন্নত করতে INDEXING এবং QUERY OPTIMIZATION অত্যন্ত গুরুত্বপূর্ণ।
common.read_more