hibernate建立复合索引
来源:互联网 发布:nginx 只允许ip访问 编辑:程序博客网 时间:2024/05/29 19:25
1,hibernate执行复合索引两种方式
在一对多的关系中,在多的一方产生做为连接的外键(只是当做外键用,数据表里边是没有外键的),当从一的一端向多的一端查询时,可能在多的一端造成全表查询问题,影响性能,所以在多的一端添加索引如下:
xml:
<class name="com.hd123.pds.User" table="pds_user">
<id name="id" >
<generator class="sequence">
<param name="sequence">user_id_seq</param>
</generator>
</id>
<property name="name" />
<many-to-one name="address" class="com.hd123.pds.Address" column="user_address_id" cascade="save_update" index="user_address_id_idx">
</many-to-one>
</class>
建立复合索引则如下,一般不会与外键复合在一起:
<class name="com.hd123.pds.Address" table="pds_address" index="address_idx" cloumns={"address_id","address_name"}>
<id name="id" column="address_id"/>
<property name="name" column="address_name"/>
</class>
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新建。
- hibernate建立复合索引
- 复合索引的建立原则
- 关于mysql建立索引 复合索引 索引类型
- [Hibernate]SchemaUpdate建立索引问题
- Hibernate SchemaUpdate建立索引问题
- [Hibernate]SchemaUpdate建立索引问题
- 复合索引
- 复合索引
- 复合索引
- 复合索引
- 复合索引
- 复合索引
- 复合索引
- 复合索引
- 复合索引
- Hibernate Search大数据量手动建立索引
- 复合索引建立原则: 列值选择性好的放在最前面
- sitemesh 建立复合视图
- iOS运行时初探-使用运行时机制向Category中添加属性
- iOS-Button点击无反应的原因
- YUV 详解
- Apache Commons工具集简介
- 三分钟教你学会MVC框架——基于java web开发
- hibernate建立复合索引
- 利用栈判断括号是否匹配
- Python中找list中最大n个数的包heapq.nlargest
- 通往全栈工程师的捷径 —— React
- 【PS教程】渐变的用途和设定技巧
- RabbitMQ和kafka从几个角度简单的对比
- Keil(MDK-ARM)系列教程(八)_在线调试(Ⅰ)
- salesforce认证 appbuilder401学习笔记 01
- HTML5 浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式