即使我用@Column(unique = true)标记,也需要输入@Index?
我有一个经常用于检索实体的属性,并希望将其作为数据库的索引列。所以这个属性已经标有@Column(unique = true),我需要把@Index?
感谢
答案 0 :(得分:3)
大多数数据库使用UNIQUE
实现UNIQUE INDEX
约束,但它们不是必需的,UNIQUE
约束不一定能为您带来索引的好处。从理论上讲,查询规划器不会考虑约束,而索引则不会。
那就是说,在MySQL的特殊情况下,它似乎是a UNIQUE
constraint and a UNIQUE INDEX
are "synonymous"。
但是您应该通过检查查询计划来确认。
答案 1 :(得分:0)
我认为你使用的是mysql,因为问题是用mysql标记的
如果您正在使用注释和类似的东西 @Column(unique = true)
然后通过hibernate将其转换为以下DDL unique(user_id)
当你查询mysql db并做 显示索引来自 它会将user_id显示为索引字段,因此答案是@unique足以将字段编入索引
HTH