Responsive Advertisement

Node.js에서 MySQL 데이터 제한하기: LIMIT 사용법

MySQL에서 대용량 데이터를 다룰 때, 특정 조건에 맞는 일부 데이터만 조회하고 싶을 때가 있습니다. 이런 경우 LIMIT 절을 사용하면 지정한 개수만큼의 데이터만 가져올 수 있습니다. Node.js와 MySQL을 연동하여 LIMIT을 사용해 데이터 조회를 최적화하는 방법을 알아보겠습니다.

Node.js와 MySQL 연결 설정

MySQL 데이터를 제한하여 조회하기 전에, 먼저 Node.js와 MySQL 간의 연결을 설정해야 합니다. 이를 위해 mysql2 패키지를 설치하고, MySQL 서버에 연결하는 방법을 알아보겠습니다.

1. mysql2 패키지 설치

MySQL과 Node.js를 연동하려면 mysql2 패키지가 필요합니다. 이 패키지는 MySQL 데이터베이스와의 연동을 쉽게 도와줍니다.

$ npm init -y
$ npm install mysql2

위 명령어를 통해 mysql2 패키지를 프로젝트에 설치할 수 있습니다.

2. MySQL 연결 설정

다음은 MySQL 서버와의 연결을 설정하는 기본 코드입니다. 이 코드를 사용해 MySQL에 연결할 수 있습니다.

// app.js

const mysql = require('mysql2');

// MySQL 연결 설정
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'your-password',
    database: 'node_mysql'
});

// MySQL 연결
connection.connect((err) => {
    if (err) {
        console.error('MySQL 연결 중 오류 발생:', err);
        return;
    }
    console.log('MySQL에 성공적으로 연결되었습니다.');
});

MySQL에서 LIMIT 사용하기

MySQL의 LIMIT 절은 조회할 데이터의 개수를 제한할 때 사용됩니다. 예를 들어, 사용자 테이블에서 상위 10개의 레코드만 조회하고 싶다면 LIMIT을 사용하면 됩니다.

1. 기본적인 LIMIT 사용법

다음은 users 테이블에서 첫 5개의 데이터를 조회하는 예시입니다.

// 첫 5개의 데이터만 조회하는 쿼리
const selectQuery = 'SELECT * FROM users LIMIT 5';

// 데이터 조회 실행
connection.query(selectQuery, (err, results) => {
    if (err) {
        console.error('데이터 조회 중 오류 발생:', err);
        return;
    }
    console.log('조회된 데이터:', results);
});

위 코드는 users 테이블에서 상위 5개의 레코드만 조회합니다. LIMIT 5는 결과를 5개로 제한하는 역할을 합니다.

2. LIMIT와 OFFSET 사용하기

LIMITOFFSET과 함께 사용할 수 있습니다. OFFSET은 결과에서 몇 번째 레코드부터 가져올지 설정할 때 사용됩니다. 예를 들어, 6번째 레코드부터 5개의 데이터를 조회하려면 다음과 같이 작성할 수 있습니다.

// 6번째 레코드부터 5개 데이터 조회
const selectQuery = 'SELECT * FROM users LIMIT 5 OFFSET 5';

// 데이터 조회 실행
connection.query(selectQuery, (err, results) => {
    if (err) {
        console.error('데이터 조회 중 오류 발생:', err);
        return;
    }
    console.log('조회된 데이터:', results);
});

위 쿼리는 6번째 레코드부터 5개의 데이터를 반환합니다. 즉, 처음 5개의 레코드를 건너뛰고 그 이후의 데이터를 조회합니다.

3. LIMIT와 ORDER BY 함께 사용하기

보통 LIMITORDER BY와 함께 사용되어 정렬된 데이터에서 상위 몇 개만 조회할 때 유용합니다. 예를 들어, 가장 최근에 가입한 사용자 3명을 조회하려면 다음과 같이 작성할 수 있습니다.

// 가입일 기준으로 가장 최근 3명 조회
const selectQuery = 'SELECT * FROM users ORDER BY created_at DESC LIMIT 3';

// 데이터 조회 실행
connection.query(selectQuery, (err, results) => {
    if (err) {
        console.error('데이터 조회 중 오류 발생:', err);
        return;
    }
    console.log('최근 가입한 사용자:', results);
});

위 쿼리는 ORDER BY created_at DESC로 사용자의 가입일을 기준으로 내림차순 정렬한 후, 가장 최근에 가입한 3명의 데이터를 조회합니다.

4. LIMIT와 페이지네이션 구현

대용량 데이터를 처리할 때는 페이지네이션을 사용해 데이터를 나눠 보여주는 것이 효율적입니다. LIMITOFFSET을 함께 사용하여 페이지네이션을 쉽게 구현할 수 있습니다. 예를 들어, 페이지 번호와 한 페이지에 표시할 데이터 개수를 설정해 원하는 데이터를 가져올 수 있습니다.

// 페이지 번호와 한 페이지당 데이터 수
const page = 2;   // 2번째 페이지
const limit = 5;  // 한 페이지에 5개의 데이터
const offset = (page - 1) * limit;

// 페이지네이션 쿼리
const selectQuery = 'SELECT * FROM users LIMIT ? OFFSET ?';
const data = [limit, offset];

// 데이터 조회 실행
connection.query(selectQuery, data, (err, results) => {
    if (err) {
        console.error('데이터 조회 중 오류 발생:', err);
        return;
    }
    console.log(`페이지 ${page}의 데이터:`, results);
});

위 코드에서는 페이지 번호와 페이지당 데이터 개수를 계산하여 LIMITOFFSET을 활용한 페이지네이션을 구현했습니다. 2번째 페이지에 해당하는 데이터를 가져오며, 한 페이지에 5개의 데이터가 표시됩니다.

MySQL 연결 종료

데이터 조회 작업이 끝나면 MySQL 연결을 안전하게 종료해야 합니다. connection.end() 메서드를 사용해 MySQL 연결을 종료할 수 있습니다.

// MySQL 연결 종료
connection.end((err) => {
    if (err) {
        console.error('MySQL 연결 종료 중 오류 발생:', err);
        return;
    }
    console.log('MySQL 연결이 종료되었습니다.');
});

전체 코드 예시

지금까지 설명한 내용을 바탕으로, 상위 5개의 데이터를 조회하는 전체 코드는 다음과 같습니다.

// app.js

const mysql = require('mysql2');

// MySQL 연결 설정
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'your-password',
    database: 'node_mysql'
});

// MySQL 연결
connection.connect((err) => {
    if (err) {
        console.error('MySQL 연결 중 오류 발생:', err);
        return;
    }
    console.log('MySQL에 성공적으로 연결되었습니다.');

    // LIMIT을 사용한 데이터 조회 쿼리
    const selectQuery = 'SELECT * FROM users LIMIT 5';

    // 데이터 조회 실행
    connection.query(selectQuery, (err, results) => {
        if (err) {
            console.error('데이터 조회 중 오류 발생:', err);
            return;
        }
        console.log('조회된 데이터:', results);

        // MySQL 연결 종료
        connection.end((err) => {
            if (err) {
                console.error('MySQL 연결 종료 중 오류 발생:', err);
                return;
            }
            console.log('MySQL 연결이 종료되었습니다.');
        });
    });
});

결론

Node.js에서 MySQL을 사용할 때 LIMIT 절을 활용하면 원하는 개수의 데이터만 빠르게 조회할 수 있습니다. LIMITOFFSET을 함께 사용하면 페이지네이션도 쉽게 구현할 수 있어, 대용량 데이터를 효과적으로 처리할 수 있습니다. 이 방법을 통해 성능 최적화와 사용자 경험을 향상시켜보세요!

댓글 쓰기