이 기사에서는 MySQL에서 페이지 매김이 무엇이며 어떻게 구현할 수 있는지 설명하겠습니다. MySQL 데이터베이스에서 큰 데이터 세트를 채울 때 동일한 페이지에서 모든 레코드를 읽는 것은 쉽지 않습니다. 페이지 매김을 사용하여 결과 집합을 여러 페이지로 나눌 수 있으며 결과 집합의 가독성이 높아집니다. 이 기사에서는 다음과 같이 설명합니다.
예제로 페이지 매김을 구현하는 방법
페이지 번호를 사용하여 오프셋을 계산하는 방법
성능 오버헤드 및 이를 처리하는 방법
데모를 위해 내 워크스테이션에 MySQL을 설치했습니다. 이전 기사 중 하나인 Windows 10에 MySQL 데이터베이스 서버 8.0.19를 설치하는 방법을 통해 Windows 10에 MySQL을 설치하는 방법을 설명합니다. MySQL 데이터베이스 서버에 sakila라는 샘플 데이터베이스를 가져왔습니다. MySQL 데이터베이스 서버를 설치하는 동안 샘플 데이터베이스를 추가할 수 있습니다.
페이지 매김을 구현하는 방법
SELECT 쿼리에서 LIMIT 절을 사용하여 페이지 매김을 구현할 수 있습니다. 다음은 구문입니다.
LIMIT 값_1, OFFSET 값_2에서 * 선택
LIMIT 조항
구문에서 첫 번째 인수는 LIMIT 절입니다. 이 LIMIT 절은 SQL 쿼리가 반환할 행 수를 제한하는 데 사용됩니다. SQL Server의 TOP 절과 같습니다.
예를 들어 상위 20명의 배우를 반환하고 싶습니다. 출력은 Actor_id 열을 기준으로 정렬되어야 하며 순서는 오름차순이어야 합니다. 다음은 쿼리입니다.
Actor_id asc LIMIT 20으로 액터 순서에서 * 선택
다음은 쿼리의 출력입니다.
페이지 매김이란 무엇입니까: LIMIT 절
OFFSET 절
구문을 다시 확인하면 두 번째 인수는 OFFSET입니다. 특정 수의 행을 보는 데 사용됩니다. 예를 들어 쿼리 출력에서 10과 20 사이의 레코드를 보고 싶은 경우 OFFSET을 사용할 수 있습니다. 테이블의 모든 레코드를 채우고 OFFSET 절에 정의된 이전 레코드를 버립니다.
예를 들어, 액터의 상위 20개 이름을 표시하고 Actor_id 열의 값이 11부터 시작해야 하는 경우 아래와 같이 쿼리를 작성할 수 있습니다.
배우에서 * 선택 LIMIT 20 OFFSET 10;
다음은 출력입니다.
페이지 매김이란 무엇입니까: OFFSET 절
위 이미지에서 볼 수 있듯이 Actor_id 컬럼의 값은 10부터 시작하여 총 20개의 레코드를 반환합니다.
페이지 번호를 사용하여 오프셋을 계산하는 방법
페이지 수를 계산하려면 LIMIT 및 OFFSET 값을 하드코딩하거나 변수에 페이지 번호 값을 전달할 수 있습니다. 페이지 번호 값을 사용하여 OFFSET 값을 계산할 수 있습니다. 페이지 번호 값을 전달하기 때문에 조금 더 안전하고 누군가 입력 변수 값을 조작하여 모든 레코드가 있는 페이지를 만들 수 없습니다.
다음은 공식입니다.
cnd 크립토 구매처
Records_Per_page= 10;
offset_value = (page_Number-1) * Records_Per_page;
예를 들어, 3페이지에 30명의 배우 이름을 표시하려고 합니다. 따라서 공식은 다음과 같아야 합니다.
Records_Per_page= 10;
offset_value_1 = (1-1) * 10;
offset_value_2 = (2-1) * 10;
offset_value_3 = (3-1) * 10;
Records_per_pages의 값은 LIMIT 절에서 사용되며 offset_value_1, offset_value_2, offset_value_3의 값은 OFFSET 절에서 사용됩니다.
쿼리는 다음과 같이 작성해야 합니다.
액터에서 * 선택 LIMIT 10 OFFSET 0;
배우에서 * 선택 LIMIT 10 OFFSET 10;
배우에서 * 선택 LIMIT 10 OFFSET 20;
다음은 첫 번째 쿼리의 출력입니다.
페이지 매김이란 무엇입니까? 제한 10, 오프셋 0
다음은 두 번째 쿼리의 출력입니다.
페이지 매김이란 무엇입니까? 제한 10, 오프셋 10
다음은 세 번째 쿼리의 출력입니다.
페이지 매김이란 무엇입니까? 제한 10, 오프셋 20
성능 오버헤드
페이지 매김은 큰 데이터 세트를 여러 페이지에 표시하는 응용 프로그램을 디자인하려는 경우 매우 유용합니다. 애플리케이션을 설계하는 동안 데이터베이스 서버에서 전체 데이터 세트를 채운 다음 애플리케이션/웹 서버에서 페이지 매김을 수행합니다. 이제 데이터베이스 서버에서 이를 수행하면 성능 향상을 달성할 수 있습니다. 그러나 때로는 데이터베이스 서버에 추가 오버헤드가 됩니다. 특히 여러 클라이언트 데이터베이스 간에 동일한 데이터베이스 서버를 공유하는 경우 성능 문제를 피하기 위해 다음 대안을 사용할 수 있습니다.
#mysql
www.sqlshack.com
MySQL 배우기: 페이지 매김이란 무엇입니까?
이 기사에서는 페이지 매김과 이를 구현하는 방법, 페이지 번호를 사용하여 오프셋을 계산하는 방법, 페이지당 레코드 수에 대해 설명합니다. 또한 성능에 영향을 미칠 수 있는 방법과 이에 대한 가능한 대안에 대해서도 설명합니다. 페이지 매김을 사용하여 결과 집합을 여러 페이지로 나눌 수 있으며 결과 집합의 가독성이 높아집니다.