2013-07-21 49 views
0

我已閱讀了關於如何在我的數據庫中創建索引列的幾個教程。從Grails documentation我知道你必須定義一個索引列。如何在Grails中使用Hibernate索引?

我的問題是:

  1. 如何處理這些索引列呢?我是否必須在我的查詢中使用它們,或者Hibernate是否爲我工作?

  2. 如何知道索引應包含哪些列?

  3. 有什麼區別: firstName column: 'First_Name', index: 'Name_Idx'matrix indexColumn: [name: "the_matrix", type: Integer]

+0

我建議你使用數據庫索引,在db中添加索引 –

+0

@SaurabhDixit爲什麼不用GORM? – confile

+0

只是一個FYI你的第一個2個問題確實與Grails或Hibernate無關。索引是數據庫功能。如果您需要信息,您應該對索引進行研究。 –

回答

1

如何處理這些索引列?我是否必須在我的查詢中使用它們,或者Hibernate是否爲我工作?

您可以將索引視爲您在數據庫中對待它們的方式。它會提高數據檢索操作的速度。 你不需要爲它做任何事情,因爲hibernate會在最後生成sql,你的數據庫將決定如何使用索引。

How do I know which columns an index should contain? 

取決於你的數據庫的知識以及如何優化你的查詢,簡單的事情是,你檢索數據更頻繁,可能需要索引的列。如果您始終搜索電話號碼或拳頭名稱,請在其上創建索引。所有數據庫索引規則也適用於此處。

What is the difference between: 
firstName column: 'First_Name', index: 'Name_Idx' and 
matrix indexColumn: [name: "the_matrix", type: Integer] 

第一種是所謂的 'Name_Idx' 的指數,這是可選的名稱。您可以通過定義類型和其他信息來使用第二個信息添加更多信息。如果您允許grails爲您生成數據庫,它將使用這些信息來創建它們。

UPDATE

根據您的問題,爲創建綜合指數看一看this link

名稱是列here您構建索引的名稱。 建築索引是更多的數據庫問題,如果你需要它們,你需要做出它們。我相信,如果你用sql標籤發佈,你可以找到更多的信息。如果你不認爲你需要它們,現在就不要這樣做,如果應用程序遇到了性能問題,那麼你可以考慮在你的查詢中建立索引。 fyi:Grails默認會爲你的主鍵創建索引

+0

感謝您的回答。爲什麼當我從不在查詢中使用它們時,我需要索引列的名稱?你能舉一個例子來說明如何創建用戶屬性firstName和lastName的索引嗎?我會製作一個複合索引列還是兩個不同的列? – confile

+0

更新了我的答案,希望這有助於。 – Alidad