hibernate建立复合索引

1,hibernate执行复合索引两种方式

在一对多的关系中,在多的一方产生做为连接的外键(只是当做外键用,数据表里边是没有外键的),当从一的一端向多的一端查询时,可能在多的一端造成全表查询问题,影响性能,所以在多的一端添加索引如下:

xml:

user_id_seq

建立复合索引则如下,一般不会与外键复合在一起:

annotation:

@Entity

@Table

@org.hibernate.annotation.Table(appliesTo="Aoo" ,index={

@Index(name="aoo_idx" column_names={"aoo_id","aoo_name"})

})

public class  Aoo{

//TODO

}

2,添加索引以后如果查询的字段包含索引,在查询过程中就不需要扫描表,直接从索引中查找数据,称之为覆盖式查询,速度很快。

3,根据where条件建立索引,要注意索引的数量,不宜过多。

4,复合索引的第一个索引一般放最常用的字段,因为如果where条件中没有用到这个字段,整个复合索引都不会起作用,第一个以后的其他索引的顺序不重要,建议还是按照常用顺序进行排序。

5,通过hibernate为字段添加索引后启动tomcat,如果表中没有该索引,hibernate会自动添加。

如果我们使用hibernate添加了复合索引,而数据表中原来有新加的复合索引中的字段,则hibernate会忽略本次新加的索引。

所以如果表中之前有索引,而新加的复合索引中包含原有索引字段,则必须先将原索引删除(sql脚本删除数据库表索引),然后hibernate新建。




你可能感兴趣的:(java,hibernate,索引,通过注解添加索引,通过配置xml添加索引,java)