簡體   English   中英

MySQL InnoDB中的集群主鍵

[英]Cluster Primary Key in MySQL InnoDB

我們有一個帶有InnoDB表的MySQL數據庫,該表包含兩個整數字段,假設AB 現在假設我們使用索引A和B創建一個聚集的主鍵 。每次填充A,B對時,數據庫中都會有一個不同的索引,因此

  • A = 123和B = 456將產生唯一索引,
  • A = 123和B = 457將產生另一個唯一索引,
  • A = 124和B = 456將產生另一個索引,依此類推...

我想知道情況A=123, B=456是否會生成與A=456, B=123相同的索引(因此發生沖突)。 如果答案是否定的(我猜想),MySQL如何結合這些字段以獲得唯一索引? 為了生成唯一索引,由於上述原因,總和A+B不好,乘積A*B將浪費變量中的大量空間,而且僅當A或B為零時將失敗,那么MySQL使用的算法是什么(或任何其他DB)以實現此結果?

MySQL索引保留列順序,並分別存儲每個列的值。

您可以認為它就像電話簿一樣。 電話簿就像是兩列的索引:姓,然后名。

在電話簿中,他們不會將名稱加在一起。 它們存儲兩者,並以逗號分隔。 因此,“ Thomas Jay”與“ Jay Thomas”是不同的條目。 顯然,它們是單獨的字段。

在多列索引中相同。 列的位置很重要。 它們不會加在一起或相乘或其他任何東西。

PS:您對“聚集”的使用有些混亂,因為聚集索引在數據庫中已經具有不同的含義。 這意味着表以索引順序存儲。 當您指的是具有多個列的索引時,我建議使用“復合索引”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM