目前,我的項目運行良好,但我需要使用索引進行查詢以加快數據庫中的數據檢索速度。crudRepository方法的使用索引
鑑於:
我的表腳本:
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 =:用戶名」
問題:我如何申請指數tbl_my_table_idx本方法findByCycleDateAndUsername(),以便它可以以更快的方式返回結果?
條件和限制:我正在使用hibernate,sybase數據庫,maven web應用程序,在java6上運行的java項目,spring-boot 1.3.5。
p/s:請不要聊天,只是寫解決方案。 p/s/s:請不要建議我改變我的編程語言,框架或升級我的Java版本。這是我工作的一個限制。
HM ...所以你是說我需要寫在本地SQL查詢,如果我想強制索引,正確?那麼是否可以使用HQL強制索引?如果是的話,請寫一個簡單的hql例子來強制索引。謝謝! – terencefung
如果沒有,那麼我猜,目前還沒有支持在HQL中指定索引提示。 – terencefung
根據我的理解,在hql中沒有對索引提示的支持......您必須使用本機查詢 – Zeromus