Facebook的用户ID上升到2 ^ 32 ..据我统计它为4294967296.
mySQL的unsigned int的范围是0到4294967295(这是1短 - 或者我的数学错误),其无符号大int的范围是0到18446744073709551615
int = 4个字节,bigint = 8个字节
要么
我将它存储为字符串吗?
varchar(10)=?字节
它将如何影响效率,我听说mysql句柄的数字远胜于字符串(性能明智).所以你们推荐什么?
我想将数据库中某些主键列的数据类型从INT更改为BIGINT.以下定义是一个玩具示例来说明问题:
CREATE TABLE IF NOT EXISTS `owner` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`thing_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `thing_id` (`thing_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
DROP TABLE IF EXISTS `thing`;
CREATE TABLE IF NOT EXISTS `thing` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
ALTER TABLE `owner`
ADD CONSTRAINT `owner_ibfk_1` FOREIGN KEY (`thing_id`) REFERENCES `thing` (`id`);
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试执行以下命令之一时:
ALTER TABLE `thing` CHANGE `id` `id` BIGINT NOT NULL AUTO_INCREMENT; …Run Code Online (Sandbox Code Playgroud)