我的情景:
Users
- > HABTM - > Groups
- > HABTM - > Other Groups
我一直在研究如何在CakePHP中使用UUID,我发现了以下内容:
Cake对UUID有本机支持,但它假定为CHAR(36)
:
http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html
这Stack Answer指出:
以CHAR(36)作为UUID的成本非常高,并且成为了 在我的谦逊中,愚蠢的1亿多,10多万,100多万行 经验
此Blog Post声明BINARY(36)
优于CHAR(36)
:
尽管CakePHP不支持16字节十六进制编码的UUID BINARY(16)的关键类型,它确实支持BINARY(36),它仍然是 比使用CHAR(36)更好,可以通过整理来减慢速度。
...但是Cake Docs并没有这么说......
我的问题是,鉴于CakePHP / MySQL(或CakePHP / Oracle),CHAR(36)是这里唯一合理的选择,或者是否有更好,更有效的方式将UUID与CakePHP(或任何其他PHP框架)一起使用那件事)?
答案 0 :(得分:3)
您可能已经知道这一点,但是您可以为新记录生成String::uuid()
的ID,并在表中添加BINARY(36)
- 我认为蛋糕在uuid代之后没有任何自动化。
答案 1 :(得分:2)
如果给CakePHP一个带有id字段的模型,其SQL类型是Binary(36),那么每次创建新记录时,id字段都将被赋予一个新的GUID值。从版本1.3.15开始,此行为就在这里。
关于你的另一个问题,由于CHAR涉及整理,我会选择二进制解决方案。