Java 即使我标记了@Column(unique=true),也需要放置@Index吗?
即使我标记了@Column(unique=true),也需要放置@Index吗 我有一个属性,该属性将经常用于检索实体,并希望使其成为数据库上的索引列。所以这个属性已经用@Column(unique=true)标记了,我需要把@Index放进去吗Java 即使我标记了@Column(unique=true),也需要放置@Index吗?,java,sql,mysql,hibernate,jpa,Java,Sql,Mysql,Hibernate,Jpa,即使我标记了@Column(unique=true),也需要放置@Index吗 我有一个属性,该属性将经常用于检索实体,并希望使其成为数据库上的索引列。所以这个属性已经用@Column(unique=true)标记了,我需要把@Index放进去吗 谢谢大多数数据库确实使用唯一索引实现了唯一约束,但是它们不是必需的,而且唯一约束不一定会给您索引的好处。理论上,查询计划器不会考虑约束,而索引会考虑约束 也就是说,在MySQL的特殊情况下,似乎是这样的 但是您应该通过检查查询计划来确认这一点 我猜您使
谢谢大多数数据库确实使用
唯一索引实现了唯一
约束,但是它们不是必需的,而且唯一
约束不一定会给您索引的好处。理论上,查询计划器不会考虑约束,而索引会考虑约束
也就是说,在MySQL的特殊情况下,似乎是这样的
但是您应该通过检查查询计划来确认这一点 我猜您使用的是mysql,因为问题是用mysql标记的
如果您使用的是注释之类的东西
@列(唯一=真)
然后通过hibernate将其转换为以下DDL
唯一(用户id)
当您查询mysql数据库并执行以下操作时
显示来自的索引
它会将user_id显示为一个索引字段,因此答案为@unique就足以对该字段进行索引
嗯