首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql bigint(20)

MySQL中的bigint(20)是一种数据类型,用于存储大整数。下面是对bigint(20)的详细解释,包括其基础概念、优势、类型、应用场景,以及可能遇到的问题和解决方法。

基础概念

bigint是MySQL中的一种整数数据类型,用于存储非常大的整数值。bigint(20)中的20表示显示宽度,即该字段在某些情况下显示的最大宽度为20个字符,但这并不限制其存储的值的大小。实际上,bigint类型的取值范围是从-9223372036854775808到9223372036854775807。

优势

  1. 大数值存储:能够存储非常大的整数,适用于需要处理大数值的场景。
  2. 精确性:与浮点数相比,整数类型提供了更高的精度,避免了浮点数运算中的舍入误差。

类型

在MySQL中,bigint有三种类型:

  • TINYINT
  • MEDIUMINT
  • INT
  • BIGINT

其中,BIGINT是范围最大的整数类型。

应用场景

  1. 用户ID:在高流量的网站中,用户ID可能会非常大,使用bigint可以确保有足够的ID空间。
  2. 订单号:电子商务平台中的订单号可能需要非常大的数值来唯一标识每个订单。
  3. 时间戳:在某些情况下,可能需要存储自某个固定时间点以来的毫秒数,这可能会超出普通整数类型的范围。

可能遇到的问题和解决方法

问题1:性能问题

原因:当表中包含大量bigint字段时,可能会导致查询性能下降。

解决方法

  • 尽量减少不必要的bigint字段。
  • 使用索引优化查询性能。
  • 考虑将大表拆分为多个小表。

问题2:存储空间问题

原因bigint类型占用的存储空间比普通整数类型多。

解决方法

  • 如果不需要处理非常大的数值,可以考虑使用更小的整数类型,如INTMEDIUMINT
  • 定期清理不再需要的旧数据以释放存储空间。

示例代码

以下是一个创建包含bigint(20)字段的表的示例:

代码语言:txt
复制
CREATE TABLE users (
    id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    PRIMARY KEY (id)
);

在这个示例中,id字段是一个无符号的bigint(20)类型,用于存储用户ID。

总结

bigint(20)在MySQL中用于存储非常大的整数值,适用于需要处理大数值的场景。尽管它占用的存储空间较多,但在需要精确性和大范围数值的情况下,它是一个非常有用的数据类型。通过合理的设计和优化,可以有效避免性能和存储空间方面的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • mysql存储手机号为什么不用bigint?

    bytes 从容量和速度上看,bigint是最好的选择。...因此,为什么不使用bigint存储手机号呢? 手机号一般是要加索引的吧。。bigint你用了like索引就失效了 1.首先,手机号的本质是字符串而不是数字,只是恰巧长得像数字而已。...:8字节 VARCHAR:15字节 CHAR:15字节 bigint > varchar = char 效率猜测: bigint > char > varchar 扩展性: bigint:最多19...and操作; 对于bigint的优势,对其进行分析: 空间占用:对于一个存放4位区号(不太可能,这里取4位为了计算最大的空间占用差距)和11号码的bigint和varchar,一个号码bigint...这也许又是另一个话题了,但无论如何,bigint始终没有达到我对插入、查询方面的效率改进的预期; 综上,bigint没有足够多的优势打动我去使用bigint存储手机号,虽然很不甘心,当初次萌生这个想法的时候是相当兴奋的

    3.5K20

    mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围

    mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint、int、mediumint、smallint 和 tinyint...的语法介绍,如下: 1、bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是...MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。...注意,所有算术运算用有符号的BIGINT或DOUBLE值完成,因此你不应该使用大于9223372036854775807(63位)的有符号大整数,除了位函数!...在MySQL3.23中,这是一个真正的浮点值。在更早的MySQL版本中,FLOAT(precision)总是有2位小数。该句法为了ODBC兼容性而提供。

    16.8K31

    MySQL中int、bigint、smallint 和 tinyint的区别详细介绍

    最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint。其中比较迷惑的是int和smallint的差别。...bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。...P.S. bigint已经有长度了,在mysql建表中的length,只是用于显示的位数 int 从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647...注释 在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。...在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。 只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。

    6.2K30

    MySQL优化20招

    如果它一开始就走全表扫描,直接一遍扫描就搞定; 虽然mysql是有优化器的,出于效率与成本考虑,遇到or条件,索引还是可能失效的; 三、尽量使用数值替代字符串类型 1、正例 主键(id):primary...key优先使用数值类型int,tinyint 性别(sex):0代表女,1代表男;数据库没有布尔类型,mysql推荐使用tinyint 2、理由 因为引擎在处理查询和连接时会逐个比较字符串中每一个字符...版本以及查询成本都有关; 如果mysql优化器发现,走索引比不走索引成本还要高,就会放弃索引,这些条件 !...如果inner join是等值连接,返回的行数比较少,所以性能相对会好一点; 使用了左连接,左边表数据结果尽量小,条件尽量放到左边处理,意味着返回的行数可能比较少; 这是mysql优化原则,就是小表驱动大表...3、避免长事务 delete执行时,如果age加了索引,MySQL会将所有相关的行加写锁和间隙锁,所有执行相关行会被锁住,如果删除数量大,会直接影响相关业务无法使用。

    60310

    mysql数据库时间类型datetime、bigint、timestamp的查询效率比较

    作者 | 哒波甜 来源 | https://juejin.cn/post/6844903701094596615 数据库中可以用datetime、bigint、timestamp来表示时间,那么选择什么类型来存储时间比较合适呢...time_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `time_long` bigint...(20) NOT NULL, PRIMARY KEY (`id`), KEY `time_long` (`time_long`), KEY `time_timestamp` (`time_timestamp...> datetime > timestamp sql分组速率测试 使用bigint 进行分组会每条数据进行一个分组,如果将bigint做一个转化在去分组就没有比较的意义了,转化也是需要时间的 通过datetime...类型排序 select * from users order by time_long 耗时:0.775s 结论 在InnoDB存储引擎下,通过时间排序,性能bigint > timestamp >

    2.6K30

    MySQL优化20招

    如果它一开始就走全表扫描,直接一遍扫描就搞定; 虽然mysql是有优化器的,出于效率与成本考虑,遇到or条件,索引还是可能失效的; 三、尽量使用数值替代字符串类型 1、正例 主键(id):primary...key优先使用数值类型int,tinyint 性别(sex):0代表女,1代表男;数据库没有布尔类型,mysql推荐使用tinyint 2、理由 因为引擎在处理查询和连接时会逐个比较字符串中每一个字符...版本以及查询成本都有关; 如果mysql优化器发现,走索引比不走索引成本还要高,就会放弃索引,这些条件 !...如果inner join是等值连接,返回的行数比较少,所以性能相对会好一点; 使用了左连接,左边表数据结果尽量小,条件尽量放到左边处理,意味着返回的行数可能比较少; 这是mysql优化原则,就是小表驱动大表...3、避免长事务 delete执行时,如果age加了索引,MySQL会将所有相关的行加写锁和间隙锁,所有执行相关行会被锁住,如果删除数量大,会直接影响相关业务无法使用。

    62820
    领券