0

私は、明確に定義されたインデックスを持つテーブルを持っています。

org.hiber....table(appliesTo="tableName", indexes={@Index(name=" ",columnNames=" "})})

インデックスを作成することです。これを実行し、実際のOracle DBインデックスで使用されている列名に言及すると、最適な結果が得られますか、それともインデックスは使用されませんか? HQL で明示的にインデックスを使用するにはどうすればよいですか? また、インデックスが使用されていることを確認するにはどうすればよいですか?

4

1 に答える 1

0

使用しているDBMSによって異なります。たとえば、Oracleでは、コストベースのオプティマイザを使用している場合、SQLを介して使用するインデックスを制御することはできません。したがって、HQLを介してこれに関連することを実行できる可能性はさらに低くなります。

インデックスが使用されているかどうかを確認するには、DBMSにも依存します。通常、Hibernateまたは他のJDBCロギングツール(JdbcDsLogなど)を介してログにダンプすることにより、DBMSに発行された実際のSQLを取得し、SQLの実行プランを表示します。

于 2012-07-13T03:24:09.397 に答える