옛날 우리는 PHP로 페이징을 구현할때 아래와 같이 쿼리를 두번 쓰곤 했습니다. 전체페이지 수를 구하기위해서죠.

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

하지만 MYSQL은 매우 오래전부터 쿼리캐싱기능의 일부로  SQL_CALC_FOUND_ROWS  쿼리를 지원합니다. 사용법은 아래와 같습니다.

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

인덱스를 잘 타는경우 쿼리를 두번쓰는게 빠르다고 하지만.. 중소규모 사이트일경우 그닥차이가 없습니다. 이와같이 SQL_CALC_FOUND_ROWS 를 쓰면 상황에 따라 코드를 많이 줄일수 있습니다.

출처 : http://xiel.net/171

 

'database, query' 카테고리의 다른 글

datetime 필드 검색  (0) 2014.11.12
UNIX_TIMESTAMP 변환하기  (0) 2014.10.13
mysql table / column(type) 변경  (0) 2014.10.08
mysqldump(백업)  (0) 2014.10.08
테이블 구조 복사 및 내용 복사  (0) 2014.10.06
블로그 이미지

디츠

“말은 쉽지, 코드를 보여줘.” “Talk is cheap. Show me the code.” – 리누스 토르발스(Linus Torvalds)

,