【发布时间】:2015-01-09 16:31:42
【问题描述】:
我已经读过,像 23423423423423423637 这样的 bigint 对于primare唯一键比像 961637593864109_412954765521130 这样的 varchar 更好,但是当我永远不会排序而只选择/时,当有 100 万行时,差异有多大更新一行。使用 varchar 对我来说会更舒服,当性能差异低于 30% 或任何值时,我会继续使用它。我找不到任何基准。
【问题讨论】:
-
猜测,可以忽略不计
-
我没有数字,但它可能很重要。主键用于对表数据进行排序,并包含在您创建的每个索引中。索引的目的是读取表的一小部分以快速识别相关记录。如果您的主键占行数据的足够大百分比,您将强制系统进行表扫描。话虽如此,使用由 36 个字节组成的 UniqueIdentifier 是很常见的。
-
这两个数字在您的 VARCHAR 中代表什么?您可以将两个有意义的数字列组合成一个主键。这样可以防止将随机数据添加为主键,从而保持数据的一致性。
-
是的,但我需要先检查 id 组合是否已经存在,然后再进行进一步操作。还有更多难以解释的事情,使用 varchar 会更舒服。例如在 100 万行时,它的重要性有多大?我无法从你的解释中猜到:/
标签: mysql performance benchmarking