MySQL-এ ইন্ডেক্স ব্যবহার করে SELECT DISTINCT দ্রুত করা
SELECT DISTINCT কোয়ারিতে ডুপ্লিকেট মান সরিয়ে ইউনিক মানগুলো রিটার্ন করতে হয়, যা বড় টেবিলে ধীর হতে পারে। सम्बन्धিত কলাম(গুল)তে ইন্ডেক্স তৈরি করলে MySQL ইন্ডেক্স ট্রি ট্রাভার্স করে দ্রুত ইউনিক মান বের করতে পারে।
উদাহরণ
টেবিল তৈরি:
CREATE TABLE DemoTable (Name VARCHAR(40));
ইন্ডেক্স তৈরি
CREATE INDEX Name_Index ON DemoTable (Name);
ডেটা ইনসার্ট:
INSERT INTO DemoTable VALUES ('Chris'), ('Mike'), ('Chris'), ('Chris'), ('Sam');
DISTINCT কোয়ারি
SELECT DISTINCT Name FROM DemoTable;
আউটপুট:
+-------+
| Name |
+-------+
| Chris |
| Mike |
| Sam |
+-------+
ইন্ডেক্স কীভাবে সাহায্য করে
- B-Tree ইন্ডেক্সে মানগুলো সর্টেড থাকে।
- MySQL ইন্ডেক্স লিফ নোডগুলো ট্রাভার্স করে সহজে ইউনিক মান বের করতে পারে।
- ফুল টেবিল স্ক্যান এড়ায়।
অতিরিক্ত টিপস
- কম্পোজিট ইন্ডেক্স (
CREATE INDEX idx ON t(a,b))DISTINCT a,bএর জন্য কাজ করে। EXPLAIN SELECT DISTINCT ...দিয়ে এক্সিকিউশন প্ল্যান চেক করুন — "Using index" বা "Using index for group-by" দেখতে পাবেন।- ভার্সন 8.0+ এ হ্যাশ ইন্ডেক্স (MEMORY ইঞ্জিন) বা ইনভিজিবল ইন্ডেক্সও ব্যবহার করা যায়।