MySQL 5.6:正确选择UUID作为主键的数据类型

时间:2018-03-29 13:18:12

标签: mysql performance primary-key

先前条件为

  
      
  1. 表格将包含数十亿的数据
  2.   
  3. 表格将具有二级索引
  4.   
  5. 表的主键将是另一个表的外键。
  6.   
  7. 表格将包含大量数据(另一列可能是文本)。
  8.   

主键必须是唯一的,因为我的数据库是通过机器复制的,这就是我选择UUID的原因。

PS:空间也是一个问题,所以我猜Varchar(36)可能是个坏主意

2 个答案:

答案 0 :(得分:2)

我同意BINARY(16)。 (16个字节优于37个。)

但是对于大型桌子来说,UUID无可救药。 (我假设您的十亿行表不适合RAM。)

我在http://mysql.rjweb.org/doc.php/uuid

中讨论了这些问题和更多问题

答案 1 :(得分:1)

我会选择BINARY(16)。如果你想使用CHAR,那么CHAR(32)足够大而没有连字符,但是BINARY更小更快。