...
Sequelize 인덱스 설정하기
시퀄라이즈 모델의 테이블 옵션 정하는 객체 블록에 indexes 로 배열을 선언해주면 된다.
const Sequelize = require('sequelize');
module.exports = class User extends Sequelize.Model {
//* 테이블 필드 설정
static init(sequelize) {
return super.init(
{
//& 시퀄라이즈는 id 자동 생성 (auto_increament + Primary 인덱스)
// id : { ... }
email: {
type: Sequelize.STRING(40),
allowNull: true,
unique: true, // 유니크 보조 인덱스 생성
},
nick: {
type: Sequelize.STRING(15),
allowNull: false,
},
password: {
type: Sequelize.STRING(100),
},
},
{
sequelize,
timestamps: true, // createdAt, updatedAt 자동 생성
underscored: false, // camel 스타일로
modelName: 'User', // 모델명
tableName: 'users', // 테이블명
paranoid: true, // deletedAt 자동 생성
charset: 'utf8', // 한글 인코딩 설정
collate: 'utf8_general_ci',
indexes: [ // 인덱스 설정
{
name: 'nick_index', // 이름을 지정해주지 않으면 기본 인덱스명은 [table]_[fields]
fields: ['nick'], // nick에 일반 보조 인덱스 생성
},
],
},
);
}
//* 테이블 관계 설정
static associate(db) {
// ...
}
};
인덱스 정보를 보면, users 테이블에 총 3개의 인덱스가 등록됨을 확인 할 수 있다.
show index from users;
이외의 시퀄라이즈 인덱스 옵션들은 다음과 같다.
다중 인덱스를 설정할 수 있으며, 인덱스 알고리즘도 정할수도 있다.
Sequelize FULLTEXT 설정하기
풀 텍스트 인덱스 설정은 위의 인덱스 문법에서 type: 'FULLTEXT' 를 지정하면 된다.
const Sequelize = require('sequelize');
module.exports = class Post extends Sequelize.Model {
static init(sequelize) {
return super.init(
{
content: {
type: Sequelize.STRING(200),
allowNull: false,
},
img: {
type: Sequelize.STRING(500),
allowNull: true,
},
},
{
sequelize,
timestamps: true,
underscored: false,
modelName: 'Post',
tableName: 'posts',
paranoid: false,
charset: 'utf8mb4',
collate: 'utf8mb4_general_ci',
indexes: [ // 인덱스 설정
{
// 인덱스 이름은 따로 지정해주지 않아, 인덱스명은 [table]_[fields]
type: 'FULLTEXT', // 풀텍스트 인덱스 설정
fields: ['content'],
},
],
},
);
}
static associate(db) {
//* Post(N) : User(1)
//? db.Post.belongsto(db.User, { foreignKey: 'Userid', targetKey: 'id' })
db.Post.belongsTo(db.User);
}
};
show index from posts;
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.