2
根據mysql的說明,「用於分區表的分區表達式中的所有列必須是表可能具有的每個唯一鍵的一部分」。爲什麼只有唯一/主鍵,爲什麼不是其他鍵呢?爲什麼只有唯一/主鍵必須在分區表中使用分區表達式中的所有列
根據mysql的說明,「用於分區表的分區表達式中的所有列必須是表可能具有的每個唯一鍵的一部分」。爲什麼只有唯一/主鍵,爲什麼不是其他鍵呢?爲什麼只有唯一/主鍵必須在分區表中使用分區表達式中的所有列
我假設你是指一個非唯一鍵。
想象一下,您有一個作爲平衡樹的關鍵點,這裏是一棵B樹,您可以按照某個標準對其進行分區,以獲得所需數量的分區或每個分區中所需數量的成員。如果這樣做,因爲樹是唯一鍵的樹,所以您將實際數據劃分爲幾乎均衡大小的分區。
現在想象一下,您有一個索引值的B樹(例如secondary index in InnoDB),樹的每個鍵指向表中的多個數據成員。在這種情況下,根據B樹進行分區並不意味着將數據劃分爲平衡塊,因此沒有必要考慮它。另一方面,在實踐中,至少根據我自己的經驗,主鍵和唯一鍵是您設計表時通常不得不回答的設計問題,該表可以改善您經常執行的查詢的性能。如果添加了在所有鍵和索引中都有分區字段的約束條件,那麼對於在分區字段中沒有字段的每個索引,您必須從分區中刪除該字段或將分區字段的所有字段添加爲默認爲所有你的指數。因此這不是一個好習慣。
這個問題似乎是題外話題,因爲它是關於一個數據庫引擎,更適合dba堆棧交換站點。 – 2014-01-06 18:01:12