사용자의 핸드폰에 있는 전화번호 목록을 받아와서
앱의 유저와 비교하여 친구인지, 비회원인지, 회원인지 비교를 해야하는 과제가 주어졌다.
매번 비교하여 데이터를 뿌려주기에는 너무 많은 낭비라서 전화번호 목록에 있는 핸드폰번호와 앱 유저를 일주일에 1번만 비교하여 테이블에 저장해 놓고 요청할 때마다 해당 테이블의 정보를 보내주는 식으로 처리하려 하니 어떻게 해야 빠르게 INSERT 할 수 있을지 찾아보았다.
기존의 방식대로
INSERT INTO table_name (1, 2, 3) VALUES (1, 2, 3);
INSERT INTO table_name (1, 2, 3) VALUES (3, 4, 5);
INSERT INTO table_name (1, 2, 3) VALUES (6, 7, 8);
values 리스트를 다중으로 사용하면 성능을 향상시킬 수 있다.
INSERT INTO table_name (1, 2, 3) VALUES (1, 2, 3);
단, 사이즈 제한이 있기에 설정에서 max_allowed_packet을 조정해주어야 한다.
mysql 링크
BIGIN;
INSERT INTO table_name (1, 2, 3) VALUES (1, 2, 3);
INSERT INTO table_name (1, 2, 3) VALUES (3, 4, 5);
INSERT INTO table_name (1, 2, 3) VALUES (6, 7, 8);
COMMIT;
데이터베이스 연결
import mysql from 'mysql';
//데이터 베이스 기본 연결
const connection = mysql.createConnection({
host: 'localhost',
user: 'username',
password: 'super_secure_password',
database: 'database_name'
});
connection.connect((error) => {
if (error) {
console.error(error);
} else {
console.log('connection successful');
}
});
// 예제 INSERT 문
connection.connect((error) => {
if (error) {
console.error(error);
} else {
let query = 'INSERT INTO user (name, age, occupation) VALUES (?, ?, ?);';
let params = ['fred', 34, 'car sales'];
connection.query(query, params, (error, result) => {
// inserted row -> 1
});
}
});
다중 삽입 기능
connection.connect((error) => {
if (error) {
console.error(error);
} else {
let query = 'INSERT INTO user (name, age, occupation) VALUES ?;';
let params = [
['fred', 34, 'car sales'],
['john', 21, 'gardner'],
['peter', 17, 'postman'],
['rob', 55, 'engineer']
];
connection.query(query, [params], (error, result) => {
// inserted rows -> 4
});
}
});