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

MySQL-এ INT কলামে ইনডেক্স: কখন ব্যবহার করবেন ও কখন না

INT টাইপের কলামে ইনডেক্স যোগ করা বড় টেবিলে ক্যোয়ারি পারফরম্যান্স 劇的に উন্নত করতে পারে, কিন্তু ছোট টেবিলে এটি অপ্রয়োজনীয় ওভারহেড যোগ করে।

ইনডেক্স সহ টেবিল তৈরি

CREATE TABLE index_int_demo (
    user_id INT,
    user_name VARCHAR(20),
    user_age INT,
    INDEX idx_user_id (user_id)
);

টেবিল কাঠামো যাচাই

DESC index_int_demo;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| user_id  | int(11)     | YES  | MUL | NULL    |       |
| user_name| varchar(20) | YES  |     | NULL    |       |
| user_age | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

Key কলামে MUL বোঝায় ইনডেক্স আছে (নন-ইউনিক)।

নমুনা ডেটা ও ক্যোয়ারি

INSERT INTO index_int_demo VALUES
(1001, 'John', 23), (1002, 'Sam', 25), (1003, 'Carol', 22), (1004, 'Mike', 26);

SELECT * FROM index_int_demo WHERE user_id = 1004;

ইনডেক্স ব্যবহার করার সিদ্ধান্ত নেওয়ার মানদণ্ড

ফ্যাক্টরইনডেক্স যোগ করুনইনডেক্স যোগ করবেন না
সারির সংখ্যা> 10,000 সারি< 1,000 সারি
সিলেক্টিভিটি (Cardinality)উচ্চ (অনেক অনন্য মান)নিম্ন (বহু ডুপ্লিকেট)
ক্যোয়ারি প্যাটার্নসাবশ WHERE/JOIN-এ এই কলামনিরapéকশ ক্যোয়ারি বা فول স্ক্যান
লিখার ফ্রিকোয়েন্সিকম INSERT/UPDATE/DELETEবহুল লিখার অপারেশন

ইনডেক্সের খরচ

  • স্টোরেজ: প্রতিটি ইনডেক্স এন্ট্রি এক্সট্রা স্পেস নেয়
  • লিখার গতি: INSERT/UPDATE/DELETE ধীর হয় (ইনডেক্স মেইনটেইন করতে হয়)
  • মেমরি: বাফার পুলে ইনডেক্স পেজ রাখতে হয়

ইনডেক্স ব্যবহার হচ্ছে কিনা যাচাই

EXPLAIN SELECT * FROM index_int_demo WHERE user_id = 1004;

type: ref বা range দেখলে ইনডেক্স ব্যবহার হচ্ছে। type: ALL মানে فول টেবিল স্ক্যান।

কম্পোজিট ইনডেক্স (বহু কলাম)

-- WHERE user_id = ? AND user_age = ? টাইপ ক্যোয়ারির জন্য
ALTER TABLE index_int_demo ADD INDEX idx_id_age (user_id, user_age);

কালাম অর্ডার mater: সবচেয়ে সিলেক্টিভ কলাম প্রথমে রাখুন।

  1. MySQL-এ একক কোয়েরিতে কলাম এবং ইনডেক্স যোগ করা

  2. MySQL-এ একক কোয়ারিতে একাধিক কলামের টাইপ পরিবর্তন করা

  3. MySQL-এ BLOB টাইপ কলামের দৈর্ঘ্য (LENGTH) বের করা

  4. MySQL কোয়েরি কলাম মান রিপ্লেস করার জন্য