YS's develop story

MySQL ) LIMIT을 활용하여 페이징 쿼리 구현하기 본문

Database/MySQL

MySQL ) LIMIT을 활용하여 페이징 쿼리 구현하기

Yusang 2021. 2. 13. 09:07

MySQL ) LIMIT을 활용하여 페이징 쿼리 활용하기

 

아래와 같이 Restaurant라는 테이블이 있습니다. 

 

 

또한 아래와 같이 Review라는 테이블이 있습니다.

 

 

마지막으로 아래와 같은 Area라는 테이블도 있습니다.

 

 

아래와 같은 쿼리를 작성하게 되면 식당 이름과 reviewCount, distance를 보여주게 됩니다.

select restaurantName,ifnull(reviewCount, 0) reviewCount,
       round(6371 *
             acos(cos(radians(areaLatitude)) * cos(radians(restaurantLatitude)) * cos(radians(restaurantLongitude)
                 - radians(areaLongitude)) + sin(radians(areaLatitude)) * sin(radians(restaurantLatitude))), 2)
           AS 'distance'

       from Restaurant
inner join Area
left outer join (select restaurantId, count(*) as reviewCount from Review group by restaurantId) ReviewCount
        on Restaurant.restaurantId = ReviewCount.restaurantId
where areaName = '성북' and Restaurant.status = 1;

 

MySQL ) 위도 경도를 활용하여 거리 계산하는 구문 작성하기

 

MySQL ) 위도 경도를 활용하여 거리 계산하는 구문 작성하기

MySQL 위도 경도를 활용해서 거리를 계산하는 구문을 작성해 봅시다. 위도, 경도를 저장하기 위한 자료형으로 decimal이 적합합니다. decimal(18,10)에서 18은 전체 자릿수, 10은 소수점 자릿수를 뜻합니

yusang.tistory.com

 

이를 보여주는 api를 설계할 때, 한 페이지에 몇 개의 정보를 보여줄지 설정하는 페이징을 지정하여야 합니다.

그렇지 않고 데이터베이스에 있는 모든 정보를 한번에 보내고자 한다면 요청이 매우 느리게 전달될 것입니다.

페이징 설정은 limit를 이용하여 쉽게 할 수 있습니다.

 

limit 0,2 = 첫번째 정보부터 2개까지의 정보를 보이도록 한다는 의미입니다.

limit 2,2 = 세번째 정보부터 2개까지의 정보를 보이도록 한다는 의미입니다.

 

 

이를 통해 API를 설계 할때 page, limit값을 쿼리 스트링으로 받아서

한 화면의 몇개의 정보를 출력할지 직접 설정할 수 있는 것입니다.

 

예를 들어 한 페이지에 20개씩 출력하고 싶다면

첫 번째 페이지는 page=0, limit=20

두 번째 페이지는 page=20, limit=20

세 번째 페이지는 page=40, limit=20 이런 식으로 사용하게 됩니다.

 

또한 한 페이지에 5개씩 출력하고 싶다면

첫 번째 페이지는 page=0, limit=5

두 번째 페이지는 page=5, limit=5

세 번째 페이지는 page=10, limit=5 이런 식으로 쿼리 스트링에 값을 넣어서 API를 사용하게 됩니다.

Comments