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ভালো