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

MySQL-এ WHERE IN vs OR: পারফরম্যান্স তুলনা

MySQL-এ IN() অপারেটর ইনডেক্স ব্যবহার করে, কিন্তু OR সাধারণত ইনডেক্স ব্যবহার করে না।

উদাহরণ টেবিল

mysql> CREATE TABLE DemoTable711 (Id INT, Name VARCHAR(100));
Query OK, 0 rows affected (0.92 sec)

mysql> INSERT INTO DemoTable711 VALUES
(100, 'Chris'), (101, 'Robert'), (102, 'Carol'), (103, 'Mike'), (104, 'Sam');
Query OK, 5 rows affected

পদ্ধতি ১: IN()

mysql> SELECT * FROM DemoTable711 WHERE Id IN (101, 103, 104);
+------+--------+
| Id   | Name   |
+------+--------+
| 101  | Robert |
| 103  | Mike   |
| 104  | Sam    |
+------+--------+

পদ্ধতি ২: OR

mysql> SELECT * FROM DemoTable711 WHERE Id = 101 OR Id = 103 OR Id = 104;
+------+--------+
| Id   | Name   |
+------+--------+
| 101  | Robert |
| 103  | Mike   |
| 104  | Sam    |
+------+--------+

পারফরম্যান্স পার্থক্য

  • IN(): অপ্টিমাইজার ইনডেক্স রেঞ্জ স্ক্যান ব্যবহার করতে পারে (দ্রুত)
  • OR: প্রায়শই ফুল টেবিল স্ক্যান করে (ধীর)
  • EXPLAIN দিয়ে কোয়েরি প্ল্যান চেক করুন

সর্বোত্তম অনুশীলন

  • স্ট্যাটিক লিস্টের জন্য IN() ব্যবহার করুন
  • ডাইনামিক/রানটাইম শর্তের জন্য OR প্রয়োজন হলে UNION ALL বিবেচনা করুন
  • বড় লিস্টের জন্য IN()-এর পরিবর্তে টেম্পোরারি টেবিল বা JOIN ভালো
  1. MySQL CASE স্টেটমেন্ট WITH ক্লজের সাথে বাস্তবায়ন

  2. MySQL স্টোরড প্রসিডিউরে WHERE IN() ব্যবহার করা

  3. MySQL-এ WHERE ক্লজে একাধিক শর্ত দিয়ে আপডেট করা

  4. MySQL-এ REGEXP ব্যবহার করে ডট ও সংখ্যা সমাহিত রেকর্ড ফেচ করা