Mybatisで実行計画を確認

Mybatisで実行計画を確認

MyBatisで実行計画を確認する方法について説明します。

実行計画の確認方法

MyBatisでは、SQLの実行計画を確認するために、ログを有効にして出力するのが一般的です。
これにより、MyBatisが生成したSQLやその実行計画を確認することができます。

例: クラスとテーブルを使った実行計画の確認

以下に、testUserというテーブルに対してクエリを実行し、その実行計画をログに出力する例を示します。

1. testUserテーブル
CREATE TABLE testUser (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);
2. MyBatisの設定ファイル

まず、MyBatisの設定ファイルでログの出力レベルを設定します。
通常、MyBatisの設定ファイル(mybatis-config.xml)でログフレームワークを使用して、実行SQLや実行計画を出力します。

<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
</configuration>
3. Mapperインターフェース

次に、testUserテーブルに対するMapperインターフェースを定義します。

public interface testUserMapper {
    @Select("SELECT * FROM testUser WHERE age > #{age}")
    List<testUser> selectUsersByAge(@Param("age") int age);
}
4. 実行計画の確認

この設定を行った上で、アプリケーションを実行すると、MyBatisが実行したSQL文がログに出力されます。
また、データベース側で実行計画を確認したい場合は、MyBatisが出力したSQLをデータベースクライアントで実行し、EXPLAINコマンドを使うことで実行計画を確認できます。

例えば、testUserテーブルに対して次のようなクエリを実行します。

EXPLAIN SELECT * FROM testUser WHERE age > 25;

この結果として、クエリの実行計画が表示され、インデックスの使用状況やスキャン方法などを確認することができます。

まとめ

MyBatisでSQLの実行計画を確認する際には、ログ出力を有効にしてMyBatisが生成するSQLをログに出力し、それを基にデータベースクライアントでEXPLAINコマンドを使って実行計画を確認するのが一般的な方法です。