EXPLAIN কমান্ড কোয়েরি এক্সিকিউশন প্ল্যান দেখায়। ORDER BY কীভাবে ইনডেক্স ব্যবহার করে বা ফাইলসর্ট করে তা বোঝার জন্য এটি উপকারী।
উদাহরণ:
টেবিল তৈরি:
CREATE TABLE DemoTable606 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(100)
);
রেকর্ড যোগ করা:
INSERT INTO DemoTable606(FirstName) VALUES('John'), ('Robert'), ('Chris'), ('David');
EXPLAIN আউটপুট বিশ্লেষণ:
১. ORDER BY Id (প্রাইমারি কি):
EXPLAIN SELECT * FROM DemoTable606 ORDER BY Id;
ফলাফল: type=index, key=PRIMARY, Extra=NULL → ইনডেক্স ব্যবহার করে সর্ট হয়েছে, ফাইলসর্ট লাগেনি।
২. ORDER BY Id, FirstName:
EXPLAIN SELECT * FROM DemoTable606 ORDER BY Id, FirstName;
ফলাফল: type=ALL, key=NULL, Extra="Using filesort" → কম্পোজিট ইনডেক্স নেই, ফাইলসর্ট ব্যবহার হয়েছে।
৩. ORDER BY Id, RAND():
EXPLAIN SELECT * FROM DemoTable606 ORDER BY Id, RAND();
ফলাফল: type=ALL, Extra="Using temporary; Using filesort" → RAND() ইনডেক্স ব্যবহার করতে দেয় না, টেম্পরারি টেবিল + ফাইলসর্ট।
নথি: PRIMARY KEY=(Id) থাকলে ORDER BY Id ইনডেক্স ব্যবহার করে। অতিরিক্ত কলাম বা RAND() যোগ করলে ফাইলসর্ট হয়। কম্পোজিট ইনডেক্স (Id, FirstName) বানালে ২ নম্বর কেসে ফাইলসর্ট এড়ানো যাবে।