-
インデックスを追加したいフィールドが含まれるモデルを開きます。たとえば、"User"モデルがあるとします。
-
モデルの定義で、インデックスを追加したいフィールドに
@Index
デコレータを使用します。@Index
デコレータはSequelizeの提供するものではなく、Sequelizeを使用している場合に便利な方法です。例:
const { Model, DataTypes, Index } = require('sequelize'); class User extends Model {} User.init({ username: { type: DataTypes.STRING, allowNull: false, unique: true, // インデックスを追加したいフィールドに@Indexデコレータを使用 // unique: trueが指定されている場合は自動的にユニークインデックスが作成されます // unique: trueを指定しない場合は、@Index(unique: false)のように明示的に指定する必要があります @Index }, email: { type: DataTypes.STRING, allowNull: false, // インデックスを追加したいフィールドに@Indexデコレータを使用 @Index }, password: { type: DataTypes.STRING, allowNull: false } }, { sequelize, modelName: 'user' });
-
モデルを定義した後、Sequelizeの
sync
メソッドを使用してDBにテーブルを作成または更新します。const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); // モデルを定義した後にsyncメソッドを呼び出す await sequelize.sync();
これで、指定したフィールドにインデックスが追加されます。インデックスは、データベースクエリのパフォーマンスを向上させるために使用されます。
注意事項:
@Index
デコレータを使用する場合、モデルのフィールドの定義内でのみ使用できます。@Index
デコレータを使用しない場合は、Sequelizeのsequelize.define
メソッドを使用してインデックスを定義することもできます。詳細については、Sequelizeの公式ドキュメントを参照してください。
以上の手順を実行することで、Sequelizeを使用してMySQLのDBモデルにインデックスを追加することができます。