2011-06-12 52 views
5

我知道InnoDB中的主鍵是集羣化的。因此,使用自動增量整數作爲主鍵具有已被排序並提高插入性能的好處。InnoDB如何排序多列主鍵

但問題是我有一個這樣的表與2列id和散列(和其他一些但不重要);

id int auto increment 
hash Guid 

我需要在哈希列上對此表進行分區,這意味着我必須將它放在主鍵中。

所以我正在考慮創建一個主鍵爲(ID,散列).ID列將用於與其他表的連接。

問題是如果我將PK作爲(id,hash)InnoDB將如何對它進行排序?

它會首先使用id列,然後使用散列函數,還是使用其他方法來確定密鑰的順序?前者會更好,因爲它從已經排序的auto inc列中受益,但我無法找到任何有關如何在組合列上完成排序的信息。

任何深入瞭解這是極大的讚賞:)

+1

它將按id,hash排序。 – 2011-06-12 12:21:12

+0

我認爲它會和DDL一樣,因爲順序很重要。通常,數據庫系統不能爲您指定訂單。主鍵的順序是性能調整的一個因素。 – 2011-07-11 06:58:31

回答

1

主鍵上的多個colums由MySQL作爲所選擇的列值的串聯管理。因此,第一列可以更快地排序,因爲它將在彙總的開始處。