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" ব্যবহার করুন