我应该在MySQL中对id/uuid(主键)使用int还是char?
我几乎所有的桌子都用id,你永远不知道它们什么时候能派上用场。但是今天我读到这个 要格外小心,确保根据惯例,您的“id”列或主键是: char36,永远不要varchar36 CakePHP将使用这两种定义,但是您将牺牲数据库MySQL大约50%的性能。这在更复杂的SELECT中最为明显,这可能需要一些连接或计算我应该在MySQL中对id/uuid(主键)使用int还是char?,mysql,Mysql,我几乎所有的桌子都用id,你永远不知道它们什么时候能派上用场。但是今天我读到这个 要格外小心,确保根据惯例,您的“id”列或主键是: char36,永远不要varchar36 CakePHP将使用这两种定义,但是您将牺牲数据库MySQL大约50%的性能。这在更复杂的SELECT中最为明显,这可能需要一些连接或计算 我想知道。。。当你只需要保存整数时,为什么还要使用基于文本的东西呢?我非常关心为正确的内容使用正确的格式,所以我想知道char是否比integer有任何性能改进?我强烈建议使用int。
我想知道。。。当你只需要保存整数时,为什么还要使用基于文本的东西呢?我非常关心为正确的内容使用正确的格式,所以我想知道char是否比integer有任何性能改进?我强烈建议使用int。我正在为我的论文做一些建模工作,我在大数据集上工作。我必须创建一个大约有70.000.000行的表。我的主键是varchar+int。开始时,创建5位数行的一个周期花了5分钟,很快就变成了40。删除主键修复了我的性能问题。我想这是因为确保独特性和它变得越来越耗时。当我的主键是int时,我没有类似的问题。
不过这是个人的经验,所以也许有人可以给出更为理论和可靠的答案。char与integer相比没有任何改进。但是,当您需要防止用户知道或篡改您不希望他们知道的其他行时,它非常有用 假设每个用户都有一个名为/img/$id.jpg的配置文件图片,这是最简单的情况,因为您不必在DB中存储任何数据来获取此信息。当然,如果你使用integer还有其他方法,有人可以循环浏览你所有的个人资料图片。有了UUID,他们就不能
当您有很多记录时,自动递增int对于性能来说更好。例如,您可以将uuid放在另一个字段secret\u key中。No,它不会提高性能。在他们的背景下大概有七千万?70万亿?哇!