user_info 中 user_id 字段是int(11)类型,主键索引
user_identify_info 中 user_id 是varchar类型,普通索引
执行结果如图,未使用到索引
将 user_identify_info 字段改为int(11)或者bigint类型,使用到索引
最后查到
1、字段是varchar类型,参数是int类型,不走索引
2、字段是varchar类型,参数是字符串,走索引
3、字段是int类型,参数是int类型,走索引
4、字段是int类型,参数是字符串,走索引
添加列delivery_address 字段扩展到1000
为这个字段添加单列索引,报异常出来,索引最大长度是3072 bytes
mysql5.7不报错,但会自动将索引长度限制在768
mysql8单列索引最长也是768
复合索引总长度不能超过768
一、修改表
二、复制表
三、表字段的数据类型
存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的。
mysql常用数据类型有:
数值类型
1、整数类型
TINYINT SMALLINT MEDIUMINT INT BIGINT
作用:存储年龄,等级,id,各种号码等
注意:为该类型指定宽度时,仅仅只是指定查询结果的显示宽度,与存储范围无关,存储范围如下
其实我们完全没必要为整数类型指定显示宽度,使用默认的就可以了
默认的显示宽度,都是在最大值的基础上加1
2、浮点型
定点数类型 DEC等同于DECIMAL
浮点类型:FLOAT DOUBLE
作用:存储薪资、身高、体重、体质参数等
3、日期类型
DATE TIME DATETIME TIMESTAMP YEAR
作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等
datatime与timestamp的区别
4、字符串类型
总结:
单从数据类型的实现机制去考虑,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。
但对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度VARCHAR列性能要好。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。
5、枚举类型和集合类型
字段的值只能在给定范围中选择,如单选框,多选框
enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female
set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)
mysql数据库中sql修改字段类型可以按照以下方式:语法规则:alter table 表名 modify 字段名 新类型
例如,有张表student,有id字段是int型的,改为varchar类型
alter table student modify id varchar(20)
执行该sql语句即可。
注意:如将varchar类型转成int类型,原字段必须是数字,
而且int的最大值是4294967295,原字段的值需要小于等于int的最大值才可以。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)