MySQL-এ OFFSET ব্যবহার করে পেজিনেশন বা রেকর্ড স্কিপ করা
MySQL-এ LIMIT এবং OFFSET ব্যবহার করে কোয়ারির ফলাফল থেকে প্রথম N সংখ্যক রেকর্ড বাদ দেওয়া যায়। এটি পেজিনেশন (pagination) বাস্তবায়নের মূল টেকনিক।
সিনট্যাক্স
SELECT * FROM table_name LIMIT row_count OFFSET offset_value;
-- অথবা সংক্ষিপ্ত রূপ:
SELECT * FROM table_name LIMIT offset_value, row_count;
উদাহরণ
টেবিল তৈরি:
CREATE TABLE DemoTable (Name VARCHAR(40));
INSERT INTO DemoTable VALUES ('Chris'), ('Robert'), ('Mike'), ('Bob'), ('David');
প্রথম ৩টি রেকর্ড বাদ দিয়ে বাকিগুলো দেখানো
SELECT * FROM DemoTable LIMIT 100 OFFSET 3;
আউটপুট:
+-------+
| Name |
+-------+
| Bob |
| David |
+-------+
পেজিনেশন ফর্মুলা
পেজ নম্বর page (১-ভিত্তিক) এবং পেজ সাইজ pageSize হলে:
OFFSET = (page - 1) * pageSize
LIMIT = pageSize
পারফরম্যান্স সতর্কতা
- বড়
OFFSET(যেমন ১০০,০০০) দিয়ে কোয়ারি চালালে MySQL আগের রোগুলো স্কিপ করতে ফুল স্ক্যান করে — খুব ধীর হয়। - সমাধান: "Keyset Pagination" বা "Seek Method" ব্যবহার করুন —
WHERE id > last_seen_id ORDER BY id LIMIT pageSize।