2017-04-21 68 views
0

目前,我的項目運行良好,但我需要使用索引進行查詢以加快數據庫中的數據檢索速度。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版本。這是我工作的一個限制。

回答

1

你的意思是你想強制索引? 像SELECT * FROM Table WITH(INDEX(Index_Name))

如果沒有,那麼不要擔心: 魔術只是在生成的查詢,然後將執行像任何其他查詢數據庫。

它是由數據庫查詢計劃,以選擇是否要使用索引

+0

HM ...所以你是說我需要寫在本地SQL查詢,如果我想強制索引,正確?那麼是否可以使用HQL強制索引?如果是的話,請寫一個簡單的hql例子來強制索引。謝謝! – terencefung

+0

如果沒有,那麼我猜,目前還沒有支持在HQL中指定索引提示。 – terencefung

+0

根據我的理解,在hql中沒有對索引提示的支持......您必須使用本機查詢 – Zeromus

相關問題