Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使我标记了@Column(unique=true),也需要放置@Index吗?_Java_Sql_Mysql_Hibernate_Jpa - Fatal编程技术网

Java 即使我标记了@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的特殊情况下,似乎是这样的 但是您应该通过检查查询计划来确认这一点 我猜您使

即使我标记了@Column(unique=true),也需要放置@Index吗

我有一个属性,该属性将经常用于检索实体,并希望使其成为数据库上的索引列。所以这个属性已经用@Column(unique=true)标记了,我需要把@Index放进去吗


谢谢

大多数数据库确实使用
唯一索引实现了
唯一
约束,但是它们不是必需的,而且
唯一
约束不一定会给您索引的好处。理论上,查询计划器不会考虑约束,而索引会考虑约束

也就是说,在MySQL的特殊情况下,似乎是这样的


但是您应该通过检查查询计划来确认这一点

我猜您使用的是mysql,因为问题是用mysql标记的

如果您使用的是注释之类的东西 @列(唯一=真)

然后通过hibernate将其转换为以下DDL 唯一(用户id)

当您查询mysql数据库并执行以下操作时 显示来自的索引 它会将user_id显示为一个索引字段,因此答案为@unique就足以对该字段进行索引