কার্ডিন্যালিটি: কলাম মানগুলোর অনন্যতার মাপ
MySQL-এ Cardinality বলতে একটি কলামে অনন্য (unique) মানের সংখ্যাকে বোঝায়। এটি কোয়েরি অপ্টিমাইজারকে ইনডেক্স ব্যবহার করার সিদ্ধান্ত নিতে সাহায্য করে।
দুই ধরনের কার্ডিন্যালিটি
- High Cardinality: কলামের প্রায় সব মান অনন্য (যেমন Primary Key, Email, UUID)। সার্চ/সর্টিং দ্রুত হয়।
- Low Cardinality: কলামে قليلًا অনন্য মান রয়েছে (যেমন Gender, Boolean, Status)। ইন্ডেক্স কম কার্যকর হয়।
High Cardinality উদাহরণ (UNIQUE কনস্ট্রেইন্ট)
mysql> CREATE TABLE UniqueDemo1 (id INT, name VARCHAR(100), UNIQUE(id,name)); mysql> INSERT INTO UniqueDemo1 VALUES (1,'John'); mysql> INSERT INTO UniqueDemo1 VALUES (1,'John'); -- ERROR 1062: Duplicate entry
Low Cardinality উদাহরণ (কনস্ট্রেইন্ট নেই)
mysql> CREATE TABLE LowCardinality (id INT, name VARCHAR(100)); mysql> INSERT INTO LowCardinality VALUES (1,'John'), (1,'John'); -- সফল mysql> SELECT * FROM LowCardinality; +------+------+ | id | name | +------+------+ | 1 | John | | 1 | John | +------+------+
মহত্ব: হাই কার্ডিন্যালিটি কলামে ইনডেক্স দিলে কোয়েরি পারফরম্যান্স বেশি উন্নত হয়।