Использование MySQL Index для внешних ключей с Hibernate - PullRequest
1 голос
/ 13 августа 2010

Наша текущая база данных (MySQL) уже имеет индексы для своих внешних ключей, поскольку они используют InnoDB, которая (afaik) автоматически генерирует IndexTables для внешних ключей. Hibernate не использовался для создания этих таблиц. Итак, мой вопрос: использует ли MySQL индексы для своих внешних ключей автоматически, когда я использую Hibernate для извлечения данных из его таблиц? Или мне нужно настроить Hibernate для использования этих индексов?

Спасибо, ymene

Ответы [ 2 ]

1 голос
/ 13 августа 2010

Использует ли MySQL индексы для своих внешних ключей автоматически, когда я использую Hibernate для извлечения данных из его таблиц? Или мне нужно настроить Hibernate для использования этих индексов?

В Hibernate нечего настраивать, чтобы серверная часть SQL использовала индексы для объединений. Пусть Hibernate выполняет свои запросы, и если оптимизатор решит, что использование индекса целесообразно, он будет его использовать.

PS: здесь я не говорю о синтаксисе Index Hints, см. HHH-2736 - поддержка подсказок по собственным / SQL-запросам в HQL / Criteria (например, подсказки Oracle SELECT) , это нечто другое .

1 голос
/ 13 августа 2010

Да, оптимизатор запросов решает использовать или , чтобы не использовать индекс. Используйте EXPLAIN в ваших инструкциях SELECT, чтобы увидеть, что он использует. Нет разницы в запросе, созданном Hibernate, или в жестко закодированном запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...