Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 是否需要在Hibernate表的@id列上创建索引_Java_Database_Hibernate_Indexing_Hbm2ddl - Fatal编程技术网

Java 是否需要在Hibernate表的@id列上创建索引

Java 是否需要在Hibernate表的@id列上创建索引,java,database,hibernate,indexing,hbm2ddl,Java,Database,Hibernate,Indexing,Hbm2ddl,我需要为hibernate表的主键添加索引吗?为了获得良好的性能,我假设用@id标记字段意味着创建了索引 @Id private String guid; 但是我没有注意到在生成的ddl中创建了任何内容 但是如果我添加了@index注释 @Id @org.hibernate.annotations.Index(name = "IDX_GUID") private String guid; 然后我注意到在DDL中创建了一个索引 所以我想我需要对每个表都这样做,但我的一部分想法是这真的是必要的,

我需要为hibernate表的主键添加索引吗?为了获得良好的性能,我假设用@id标记字段意味着创建了索引

@Id
private String guid;
但是我没有注意到在生成的ddl中创建了任何内容

但是如果我添加了@index注释

@Id
@org.hibernate.annotations.Index(name = "IDX_GUID")
private String guid;
然后我注意到在DDL中创建了一个索引


所以我想我需要对每个表都这样做,但我的一部分想法是这真的是必要的,因为hibernate肯定希望为主键创建索引作为起点?

您不必显式创建索引。而不是看到DDL语句;我建议您检查hibernate创建的最终模式。索引是作为create table语句的一部分创建的。

@Deepak,只是为了确认我的理解,您是说索引创建不是作为DDL(hbm2ddl)导出过程的一部分处理的吗?如果是这样的话,那么DDL在很大程度上是无用的,还是我在这里遗漏了什么?Thanks@paulkmoore我们可以用两种方法创建索引;即。“创建索引…”或在创建表时,我们可以指定。。我想说的是,在本例中,主键上的索引是在创建表时创建的。@Deepak,好的,谢谢,我没有区分主键索引和其他(常规)索引。谢谢你的帮助。另请参阅-