Нужно поставить @Index, даже если я пометил @Column (unique = true)? - PullRequest
3 голосов
/ 26 октября 2010

Нужно поставить @Index, даже если я пометил @Column (unique = true)?

У меня есть свойство, которое будет часто использоваться для извлечения сущности, и я хотел сделать его столбцом индекса набаза данных.Так что это свойство уже помечено @Column (unique = true), нужно ли ставить @Index?

спасибо

Ответы [ 2 ]

3 голосов
/ 26 октября 2010

Большинство баз данных реализуют ограничения UNIQUE, используя UNIQUE INDEX, но они не обязательны, а ограничение UNIQUE не обязательно дает вам преимущества индекса.Теоретически, ограничение не будет рассматриваться планировщиком запросов, тогда как индекс будет:* являются "синонимами" .

Но вы должны подтвердить это, проверив план запроса.

0 голосов
/ 26 октября 2010

Я предполагаю, что вы используете mysql, поскольку вопрос помечен как mysql

Если вы используете аннотации и что-то вроде этого @Column (unique = true)

Тогда это преобразуется вследующий DDL по hibernate unique (user_id)

Когда вы запрашиваете mysql db и делаете show index из него, в качестве индексированного поля будет отображаться user_id, так что ответа @unique достаточно для индексирования поля

HTH

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