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

MySQL-এ LIMIT OFFSET দিয়ে রো বাদ দিয়ে (Skip) রেকর্ড বের করা

MySQL-এ LIMIT ... OFFSET ... বা LIMIT offset, count ব্যবহার করে শুরু থেকে কিছু রো বাদ দিয়ে (skip করে) পরের রেকর্ডগুলো বের করা যায়।

উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> create table DemoTable860( 
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    Name varchar(100) 
); 
Query OK, 0 rows affected (0.73 sec)
mysql> insert into DemoTable860(Name) values('Chris'); 
Query OK, 1 row affected (0.14 sec) 
mysql> insert into DemoTable860(Name) values('Robert'); 
Query OK, 1 row affected (0.11 sec) 
mysql> insert into DemoTable860(Name) values('David'); 
Query OK, 1 row affected (0.11 sec) 
mysql> insert into DemoTable860(Name) values('Bob'); 
Query OK, 1 row affected (0.10 sec) 
mysql> insert into DemoTable860(Name) values('Mike'); 
Query OK, 1 row affected (0.22 sec) 
mysql> insert into DemoTable860(Name) values('Sam'); 
Query OK, 1 row affected (0.07 sec)

সকল রেকর্ড দেখানো

mysql> select * from DemoTable860;
+----+--------+
| Id | Name   |
+----+--------+
| 1  | Chris  |
| 2  | Robert |
| 3  | David  |
| 4  | Bob    |
| 5  | Mike   |
| 6  | Sam    |
+----+--------+
6 rows in set (0.00 sec)

প্রথম ২টি বাদ দিয়ে পরের ৩টি রেকর্ড বের করা

mysql> select * from DemoTable860 limit 3 offset 2;
+----+-------+
| Id | Name  |
+----+-------+
| 3  | David |
| 4  | Bob   |
| 5  | Mike  |
+----+-------+
3 rows in set (0.00 sec)

দুই সিনট্যাক্স (সমতুল্য)

-- পেজ নম্বর: page (১-ভিত্তিক), পেজ সাইজ: pageSize
OFFSET = (page - 1) * pageSize
LIMIT = pageSize

-- পেজ ১: LIMIT 10 OFFSET 0
-- পেজ ২: LIMIT 10 OFFSET 10
-- পেজ ৩: LIMIT 10 OFFSET 20

পারফরম্যান্স সতর্কতা (বড় OFFSET-এ)

  • OFFSET 1000000 খুব ধীর — MySQL ১০ লাখ রো স্কিপ করে পড়ে
  • সমাধান: "Keyset Pagination" / "Seek Method" ব্যবহার করুন
 
            
  1. MySQL টেবিল থেকে একাধিক সারি ডিলিট করতে কীভাবে পারি?

  2. MySQL-এ ব্যাচ ইনসার্ট (Batch Insert) করার উপায়

  3. MySQL-এ অ্যাপস্ট্রফি (') এস্কেপ করার উপায়

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