কম্পিউটার টিউটোরিয়াল

MySQL-এ ইন্ডেক্স তৈরি করে SELECT DISTINCT পারফরম্যান্স বাড়ানো


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 ইঞ্জিন) বা ইনভিজিবল ইন্ডেক্সও ব্যবহার করা যায়।
  1. MySQL SELECT স্টেটমেন্টে NULL ব্যবহার

  2. MySQL-এ SELECT DISTINCT vs GROUP BY: পার্থক্য ও ব্যবহার

  3. MySQL-এ রিকারসিভ (Recursive) SELECT কোয়েরি করা

  4. MySQL-এ শেষ ১০টি সারি কীভাবে বের করবেন?