LIMIT ক্লজ ব্যবহার করার সময় টোটাল রো সংখ্যা জানতে SQL_CALC_FOUND_ROWS অপশন ব্যবহার করুন।
সিনট্যাক্স
SELECT SQL_CALC_FOUND_ROWS * FROM yourTableName LIMIT 0, yourLastValue;
এরপর SELECT FOUND_ROWS(); চালিয়ে টোটাল রো পান।
উদাহরণ দিয়ে বুঝি
টেবিল তৈরি করুন:
mysql> CREATE TABLE RowsUsingLimit (
-> Id INT NOT NULL,
-> Name VARCHAR(10)
-> );
Query OK, 0 rows affected (3.50 sec)
রেকর্ড ইনসার্ট করুন:
mysql> INSERT INTO RowsUsingLimit VALUES(10, 'Larry');
mysql> INSERT INTO RowsUsingLimit VALUES(9, 'Mike');
mysql> INSERT INTO RowsUsingLimit VALUES(15, 'Sam');
mysql> INSERT INTO RowsUsingLimit VALUES(20, 'Bob');
mysql> INSERT INTO RowsUsingLimit VALUES(1, 'Carol');
mysql> INSERT INTO RowsUsingLimit VALUES(18, 'David');
সকল রেকর্ড:
mysql> SELECT * FROM RowsUsingLimit;
+----+-------+
| Id | Name |
+----+-------+
| 10 | Larry |
| 9 | Mike |
| 15 | Sam |
| 20 | Bob |
| 1 | Carol |
| 18 | David |
+----+-------+
6 rows in set (0.00 sec)
LIMIT সহ SQL_CALC_FOUND_ROWS ব্যবহার
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM RowsUsingLimit LIMIT 0,6;
+----+-------+
| Id | Name |
+----+-------+
| 10 | Larry |
| 9 | Mike |
| 15 | Sam |
| 20 | Bob |
| 1 | Carol |
| 18 | David |
+----+-------+
6 rows in set (0.00 sec)
টোটাল রো সংখ্যা বের করুন
mysql> SELECT FOUND_ROWS();
+--------------+
| FOUND_ROWS() |
+--------------+
| 6 |
+--------------+
1 row in set (0.00 sec)
ব্যবহার ক্ষেত্র: পেজিনেশন (pagination) ইমপ্লিমেন্ট করার সময় এটি খুব উপকারী - একবারে লিমিটেড রো ফেচ করলেও টোটাল রো কাউন্ট পাওয়া যায়।
নোট: MySQL 8.0.17+ এ SQL_CALC_FOUND_ROWS ডিপ্রিকেট করা হয়েছে। বিকল্প হিসেবে আলাদা SELECT COUNT(*) কোয়েরি চালানোর পরামর্শ দেওয়া হয়।