目前,我的项目运行良好,但我需要为查询使用索引来加速数据库中的数据检索。
鉴于:
我的表格脚本:
create table tbl_my_table (
cycle_date date not null,
seq_no int not null,
username varchar(50) not null,
last_update_time datetime not null
)
go
alter table tbl_my_table add constraint tbl_my_tablePK primary key (cycle_date, seq_no )
go
create nonclustered index tbl_my_table_idx on tbl_my_table (cycle_date,username)
go
我的实体类:
@Entity
@Table(name = "tbl_my_table")
@IdClass(MyTablePK.class)
public class MyTable implements Serializable{
private static final long serialVersionUID = 3419263311932213654L;
@Id
@Column(name = "cycle_date", nullable = false, columnDefinition="date")
private Date cycleDate;
@Id
@Column(name = "seq_no", nullable = false, columnDefinition="smallint")
private Integer seq_no ;
@Column(name = "username", nullable = false, columnDefinition="varchar(50)")
private String username;
@Column(name="last_update_time", nullable = false, columnDefinition="datetime")
private DateTime last_update_time;
(with getters & setters, equals and hashcode, and toString methods)
}
我的存储库或DAO:
public interface MyTableDAO extends CrudRepository<MyTable, MyTablePK> {
List<MyTable> findByCycleDateAndUsername(
Date cycleDate, String username);
}
使用CrudRepository,我知道我不需要编写查询来检索一些记录。上面的方法findByCycleDateAndUsername被“神奇地”翻译成查询:“从MyTable中选择一个a.cycleDate =:cycleDate和a.username =:username”
问题:如何将索引tbl_my_table_idx应用于此方法findByCycleDateAndUsername(),以便它能够以更快的方式返回结果?
条件和限制:我正在开发一个java项目,在java6,spring-boot 1.3.5上运行,使用hibernate,sybase数据库,maven web应用程序。
p / s:请不要聊天,只是书面解决方案。 p / s / s:请不要建议我改变我的编程语言,框架或升级我的java版本。这是对我工作的限制。
答案 0 :(得分:1)
SELECT * FROM Table WITH(INDEX(Index_Name))
?
如果没有,那么请不要担心: 魔法只是在生成查询,然后像db上的任何其他查询一样执行。
由db查询计划决定是否使用索引