首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql Bigint vs.vs.vs.

Mysql Bigint vs.vs.vs.
EN

Stack Overflow用户
提问于 2013-03-06 15:46:55
回答 3查看 17.6K关注 0票数 16

什么是硬盘/RAM上索引字段和空间标记的最佳选择?Biginteger还是Varchar(15)?例如,我可以有这样的索引号:

代码语言:javascript
运行
复制
from  10000001 to 45281229703 and higher...

但是选择哪一个更好呢?另外,在非索引字段中,哪种字段类型更好?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-06 15:48:09

BIGINT始终是8字节,VARCHAR(15)是1..16字节,这取决于值的长度,因此BIGINT对于大数需要较少的内存,但是对于小数(小于7位)需要更多的内存。而且,BIGINT更快。

票数 37
EN

Stack Overflow用户

发布于 2016-08-24 15:29:41

并在仿真环境中进行了测试。

使用1个BIGINT和1VARCHAR参数创建了

  1. 插入了30Lac行。
  2. 在两个字段上都创建了索引。
  3. 结果是:BIGINT响应几乎20time的比VARCHAR.

下面是执行上述步骤的脚本:

代码语言:javascript
运行
复制
Create table r5(mob bigint,m_mob varchar(30));

Create index i_d on r5(mob,m_mob);


do $$
begin
for i in 1..3000000 loop
insert into r5(mob,m_mob) values(i,i||’abc’);
end loop;
end; $$

select * from r5
where mob=2900000;

select * from r5
where m_mob=’2900000abc’;
票数 13
EN

Stack Overflow用户

发布于 2013-03-06 15:49:27

varchar增加了开销:

每个字段和索引中的字符串长度需要存储(MySQL中额外的2字节IIRC ),因此需要更多的处理来进行比较

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15241708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档