[컴][db] MySQL, MariaDB 에서 pagination 을 위해 total count 를 얻을때

마리아 db , mysql database pagination 속도 향상 / MySQL, MariaDB 에서 pagination 을 위해 total count 를 얻을때

MySQL, MariaDB 에서 pagination 을 효과적으로 하는 법

Note

The SQL_CALC_FOUND_ROWS query modifier and accompanying FOUND_ROWS() function are deprecated as of MySQL 8.0.17; expect them to be removed in a future version of MySQL. As a replacement, considering executing > your query with LIMIT, and then a second query with COUNT(*) and without LIMIT to determine whether there are additional rows. For example, instead of these queries:

SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();

Use these queries instead:

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) FROM tbl_name WHERE id > 100;

COUNT(*) is subject to certain optimizations. SQL_CALC_FOUND_ROWS causes some optimizations to be disabled.

위의 글에서는 pagination 의 속도를 높이는 몇가지 방법을 소개한다. 몇가지를 정리하면,

  • id 를 같이 보내서, offset 보다 id 로 검색할 대상을 줄이는 방법
  • 주변의 page 여러개를 같이 가져온다. 그렇게 미리미리 page 를 가져온다.

Reference

  1. mysql - Which is fastest? SELECT SQL_CALC_FOUND_ROWS FROM table, or SELECT COUNT(*) - Stack Overflow

댓글 없음:

댓글 쓰기