int signed in mysql_【转】mysql 中int类型字段unsigned和signed的区别

转自https://www.cnblogs.com/wangzhongqiu/p/6424827.html

用法:

mysql> CREATE TABLE t ( a INT UNSIGNED, b INT UNSIGNED )

探索一:正负数问题

拿tinyint字段来举例,unsigned后,字段的取值范围是0-255,而signed的范围是-128 - 127。 那么如果我们在明确不需要负值存在的情况下,通常是不要设置signed来支持负数的。 因为只支持正数会让存储空间大一倍呢(当然我这种表达可能不准确)。 假设我们使用tinyint来存储一些状态值。 0表示删除,1表示待付款,2表示已付款,3...。 突然来个需求要加订单取消,一些有代码洁癖的人就想,那就将定义为:-1表示取消吧。 但是就因为有了-1,我们说起来应该可以从0存到255的,结果就变为了0-127。 所以一般情况下,我们不建议这样设置

字段设置为unsigned后有一个问题是:

当select a - b from t时,a为10,b为12,那么这时就会出现异常情况:ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(`test`.`t`.`a` - `test`.`t`.`b`)'

所以注意这种情况即可

探索二:性能问题

严格讲,在性能上是有细微的差别的。 unsigned的性能更好,当只存储正整数的情况下。 因为,当unsigned时,假设查询值在500以下的数据,那么MySQL会将范围定义为:0-500,而如果是signed,则查询范围为:-2147483648 - 500。 参考文章:http://rakesh.sankar-b.com/2010/08/25/mysql-unsigned-int-to-signed-int-performance-tips-index/

里面讲到:

Let’s say you want to know the list of customers who have purchased an item of quantity 500 or less. Following is the query you might be used to get these results:

SELECT *

FROM customer

WHERE quantity <= 500

Cool, the above query will yield you the list of customers who have purchased an item of quantity 500 or less. Right, what is the big deal, it should return fast, but consider when you have a table with millions of records then this query might be slow in returning you the results.

Yes, that is true, you can always add an “ index ” to the “quantity” field and improve the performance – exactly, this should improve the performance of processing the query much better than without an “index”.

Without “unsigned”:

Process flow, since the quantity field is an “ int ” and you have an  index  of this field, MySQL  will define the range as  -2147483648 to 500  and it will get the result based on this range.

With “unsigned”:

Process flow, since the quantity field is an “ int ” with “ unsigned ” and you have an index of this field,  MySQL  will define the range as  0 to 500  and it will get the result based on this range.

Now compare the difference yourself and tell me, for sure it will improve the performance of the your query. Since we know we never store any negative (signed values) in the quantity field and the default behavior of “ int ” is “ signed “, it’s always better to write a full-syntax while creating a table.

总的说来,设置unsigned最大的差异是字段取值范围的变化。 所以基于这点来对字段的unsigned或者signed是比较明智的决定

以上

参考文献:

http://verysimple.com/2006/10/22/mysql-data-type-optimization-tips/

http://rakesh.sankar-b.com/2010/08/25/mysql-unsigned-int-to-signed-int-performance-tips-index/

http://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html

http://www.cnblogs.com/blankqdb/archive/2012/11/03/blank_qdb.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

navicat fo mysql 教程_Navicat For MySQL的简单使用教程

1.前提是必须先安装好MySQL数据库(Mac下安装MySQL数据库见前一篇)2.安装Navicat3.点击navicate左上角&#xff1a;连接->MySQL->先测链接下&#xff0c;如果提示连接成功&#xff0c;就可以填写连接名&#xff0c;点击连接即可。双击刚创建的连接下面会有四个数据库用naV…

mysql linux32_Linux 配置 mysql 5.7.32 实操记录

下载环节官网自行获取检查环境环节1. 检测自带mysql#rpm -qa | grep mysql2.删除 “1” 找到的 所有#rpm -e --nodeps 名称3.查询所有mysql文件夹#whereis mysql#find / -name mysql删除所有结果 (rm -rf 文件路径)安装环节1. 切换路径#cd /usr/local2.拷贝mysql安装包到此目录…

mysql8.0 tar安装_CentOS7安装MySQL8.0 tar包

CentOS7安装MySQL8.0 tar包一、卸载1. 查看有没有安装mysqlrpm -qa | grep mysql删除#rpm -e --nodeps mysql-libs-5.1.71-1.el6.i686 或# for i in $(rpm -qa|grep mysql);do rpm -e $i --nodeps;done2. 使用 find / -name mysql 命令查找原有mysql的相关配置文件&#xff0c;…

mysql官网 ab_MySQLAB同步

MySQL 支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日1 . 介绍MySQL 支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并…

jtree和mysql_java 已经获取某个mysql数据库的所有表名 创建JTree

展开全部那只e68a843231313335323631343130323136353331333335303530能创建一层的JTree &#xff1f;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JFram…

mvc json 乱码_你了解JSON吗?——Jackson、FastJson在SpringMVC中的简单使用

原文参考分享自CSDN&#xff1a;你了解JSON吗&#xff1f;--Jackson、FastJson在SpringMVC中的简单使用_欢迎来到 Baret~H 的博客-CSDN博客1. 什么是 JSONJSON&#xff08;JavaScript Object Notation, JS 对象标记&#xff09;是一种轻量级的数据交换格式采用完全独立于编程语…

format 函数包含_Python成为专业人士笔记-高级对象Format格式化

“专业人士笔记”系列目录&#xff1a;创帆云&#xff1a;Python成为专业人士笔记--强烈建议收藏&#xff01;每日持续更新&#xff01;​zhuanlan.zhihu.com在存储和转换数据输出供查看时&#xff0c;字符串格式可能变得非常重要。Python提供了本文概述的各种字符串格式化方法…

python 预测算法_Python 与金融数据使用机器学习算法预测交易策略

记得 关注、分享、点在看呀&#xff5e; 这样您就能持续收到优质的推送啦这一期&#xff0c;我们将使用上一期处理好的数据特征和标签训练机器&#xff0c;然后预测交易策略。我们将分别使用 K近邻算法和集成学习两种方法分别完成模型的训练和预测。FinTech HistoryPython 与金…

mysql主从表结构差异_mysqldiff对比主从表结构是否一致

mysqldiff该工具是官方mysql-utilities工具集的一个脚本&#xff0c;可以实现主从服务器表结构是否一致。数据校验需要使用Percona的pt-table-checksum工具。安装&#xff1a;# tar zxvf mysql-utilities-1.5.4.tar.gz# cd mysql-utilities-1.5.4# python setup.py install使用…

mysql 存储过程插入慢_mysql存储过程太慢怎么办

mysql存储过程太慢的解决方法&#xff1a;首先打开my.cnf配置文件&#xff1b;然后添加配置【long_query_time1】&#xff1b;接着通过【tail -f /tmp/logs/mysqld.log】命令监控sql&#xff1b;最后进行针对性的优化即可。解决方法&#xff1a;第一步&#xff1a;修改/etc/my.…

mongoose换成mysql_Package - tms-koa

tms-koa基于koa的轻量级快速开发框架&#xff0c;包含 MVC 中的 M 和 C 两部分&#xff0c;适合于实现 API 服务和前后端彻底分离的应用。内置基于 access_token 的访问鉴权机制&#xff0c;更容易实现 API 调用的负载分担。内置通过连接池访问 MySQL 数据库&#xff0c;支持进…

导出远程mysql数据库中的表_shell脚本实现导出远程mysql数据库表数据至本地

bin/main.sh脚本内容 #!/bin/bash#作用&#xff1a;用于同步远程mysql数据库表数据至本地#作者&#xff1a;丁艺博source /etc/profilesource ~/.bash_profileexport LANGen_US.UTF-8export RUN_HOME$(cd "$(dirname "$0")"; echo "${PWD%/*}")s…

商业智能解决方案_格至智能开关:简单便捷的商业智能照明解决方案

美莱恩智能照明推出的格至智能调光开关&#xff0c;是一款便捷、可轻松实现扩展的智能照明系统。它能够节约能源&#xff0c;并在为各种空间工作或者学习的人们&#xff0c;营造最舒适的照明环境。借助美莱恩SLT单火线传输技术&#xff0c;在新建或者改造项目中&#xff0c;你将…

vue 安装 less_解决旧Vue项目升级less-loader 6.0.0报错

作为一个爱折腾的主,我的package随时都是ncu -u! 何为ncu,就是检查nodejs npm/yarn项目依赖最新版本package.json一个插件! 这不,前几天less-loader 升级了最新版,我也迫不及待升级。 升级最新版软件依赖有很多好处,总之作为一个开发者你发布新版本肯定是升级改造的工作…

php读取mysql数据无法修改时间_php设置mysql查询读取数据的超时时间

php可以设置mysql查询的超时时间估计大家不知道吧&#xff0c;一般都直接在mysql中进行设置了&#xff0c;下面我们来为各位介绍一下php设置mysql查询读取数据的超时时间吧。现象&#xff1a;php能通过代理正常连接到mysql。但是&#xff0c;执行query后&#xff0c;一直等待&a…

mysql无序id怎么优化limit_MYSQL分页limit速度太慢优化方法

原标题&#xff1a;MYSQL分页limit速度太慢优化方法在mysql中limit可以实现快速分页&#xff0c;但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了&#xff0c;否则可能卡死你的服务器哦。当一个表数据有几百万的数据的时候成了问题&#xff01;如 * fr…

反积分饱和 程序_用抗积分饱和PID控制传递函数为G(s)的被控对象

题目&#xff1a;用抗积分饱和PID控制传递函数为G(s)的被控对象G(s)523500/(s^387.35s^210470s)二、抗积分饱和原理积分饱和现象是在系统存在一个方向的偏差&#xff0c;PID控制器的输出由于积分作用的不断加大而加大&#xff0c;从而导致执行器达到极限位置&#xff0c;如果控…

mysql top 1效率_TOP 1比不加TOP慢的疑惑

问题描述&#xff1a; 有一个查询如下&#xff0c;去掉 TOP 1 的时候&#xff0c;很快就出来结果了&#xff0c;但加上 TOP 1 的时候&#xff0c;一般要 2~3 秒才出数据&#xff0c;何解&#xff1f; SELECT TOP 1 ??? A . INVNO FROM A , B WHERE A . Item B . ItemNumber…

jieba库词频统计_用jieba库统计文本词频及云词图的生成

一、安装jieba库&#xff1a;\>pip install jieba #或者 pip3 install jieba二、jieba库解析jieba库主要提供提供分词功能&#xff0c;可以辅助自定义分词词典。jieba库中包含的主要函数如下&#xff1a;jieba.cut(s) …

mysql查看表描述_MySQL表记录操作介绍(重点介绍查询操作)

MySQL表记录操作指的是对数据库表中数据进行CRUD增删改查操作&#xff0c;一下将一一给大家介绍&#xff0c;重点介绍查询操作。一、插入数据(INSERT)二、删除数据(DELETE)三、修改数据(UPDATE)四、查询数据(SELECT)下面将以例子对数据查询进行详细讲解&#xff1a;例子&#x…