首页 > 数据库 >mysql相关

mysql相关

时间:2023-07-20 23:56:05浏览次数:31  
标签:存储 字节 mysql 索引 长度 类型 相关 255

字段类型的选择

优先级:数字类型 》 日期、二进制》 字符型 

相同级别的数据类型,应该选用占用空间小的类型。

原因:

数据比较,字符类型和当前排序规则相关,数字和二进制不需要。

数据处理是以页为单位,innodb中是16K,数据小,容纳的就多,加载的页就少,减少磁盘IO。

 

实际分析

整数类型

例如 

有的人用int(2) 。实际这种2没有意义。 对存储空间没什么影响。要选择的类型正确才行。

Varchar和Char类型

 Varchar存储特点

  • Varchar用于存储变长字符串,只占用必要的存储空间。(一个字符有多个字节。)
  • varchar小于255长度,占用一个长度字节。大于255,占用两个字节存储长度。
  • 65535是innodb最长的,所有varchar列共享的长度。
  • varchar适用于很少被更新的字段,容易产生碎片。

 

varchar长度的选择

  • 使用最小的符合需求的长度
    • 结合业务
    • 名字长度怎么也不能定义到255长度
    • 列的宽度尽量有提前量,mysql5.7版本之后修改宽度,还是在255内,不锁表。大于255,还是锁表的。
    • mysql为了优化查询,越短越省内存。

char类型

最大255

适合存储

  • 长度接近:MD5值、身份照、手机号
  • 短字符串(男、女)eg: uft-8中存男女 cha用3字节 varchar 要四个字节 因为有一个字节存长度。

日期类型

  • DataTime类型
    • mysql5.6 前存s ,之后能存微秒,datatime(6)就能存微秒。
    • 与时区无关
    • 时间范围1000年到9999年
    • 最常用
  • timestamp类型 时间戳
    • 存了1970到现在的秒数
    • 能存1970到2038年。
    • 依赖时区。

Mysql复制功能

可以复制,增加读机器,性能比较快,分批复制。

MYSQL日志

 

 

索引

告诉存储引擎,怎么快速找到数据。 数据少差不太多,数据多,内存存不下了,就能看出来。 索引过少和过多都不好。

常见索引类型(存储引擎层特有的)

B树索引(也叫B+树):

叶子结点有下一个叶子的指针,方便遍历。平衡查找树,顺序存放,在同一层。 mysam(根据数据物理位置引用行)innodb(根据主键引用行的) 更适合范围查找

什么情况下可以用到B树索引

  1. 全值匹配 order_sn='123456'
  2. 最左前缀 
  3. 匹配列前缀 order_sn like '123%'
  4. order_sn > '121'  and order_sn < '125'
  5. 精确匹配左前列,并范围匹配另外一列。 
  6. 只访问索引查询。(覆盖索引)

B树索引的限制(建了索引,但是没有生效)

  1. 命中的行太多
  2. 联合索引不是按照最左列查找。
  3. not in 和 <> 不能用索引
  4. 查询中某个列用范围查询,右边所有列都不能走索引。

Hash索引

特点
  1. 基于hash实现的
  2. 只有查询的条件精确匹配时,才能用到
  3. 所有列,存储引擎都会计算一个hash码,索引中存储的就是hash码。
限制
  1. 必须进行二次查找
  2. 无法用于排序
  3. 不支持部分索引查找
  4. 不支持范围查找
  5. hash码可能存在hash冲突

 

索引好处

减少扫描的数据量

帮助我们进行排序,避免用临时表

把随机IO变为顺序IO

 

索引越多越好?

太多了,性能有损耗。

  • 增加写入成本。数据变动要修改索引。innodb引入缓存,批量地操作。
  • 太多索引,影响查询优化器选择时间。
                                         

 

标签:存储,字节,mysql,索引,长度,类型,相关,255
From: https://www.cnblogs.com/jiangym/p/17569920.html

相关文章

  • windows mysql快速导入数据库文件
    Windows下快速导入MySQL数据库文件在开发和维护项目时,我们通常需要将数据库中的数据导入到本地进行分析和测试。对于MySQL数据库,我们可以通过一些简单的步骤来快速导入数据库文件。在本文中,我们将介绍在Windows环境下如何实现快速导入数据库文件的方法。步骤一:安装MySQL首先,我们......
  • windows mysql 启动日志
    实现"WindowsMySQL启动日志"的步骤下面是实现"WindowsMySQL启动日志"的步骤的表格示例:步骤描述1安装MySQL服务器2配置MySQL服务器启动参数3设置MySQL服务器日志输出4启动MySQL服务器接下来,我们将逐步解释每个步骤应该如何执行。步骤1:安......
  • win10安装mysql exe点击安装
    如何在Win10上安装MySQL1.安装准备在开始安装MySQL之前,我们需要先下载MySQL的安装包。你可以在MySQL官方网站上下载最新的MySQLCommunityServer版本。确保你下载的是适用于Windows操作系统的安装包。2.安装步骤下面是安装MySQL的具体步骤,你可以按照以下表格逐步操作:步......
  • wamp mysql 开远程
    如何实现"wampmysql开远程"一、流程图下面是实现"wampmysql开远程"的流程图:步骤操作1.安装WAMP服务器下载并安装WAMP服务器2.修改MySQL配置打开MySQL配置文件,修改允许远程访问的设置3.配置防火墙在防火墙中添加MySQL的入站规则4.重启WAMP服务器重......
  • 读取MySQL中JSON文本会乱序
    如何读取MySQL中的JSON文本并保持顺序当我们在MySQL数据库中存储JSON文本时,有时候我们可能希望能够读取到与存储时相同的顺序。然而,由于MySQL的JSON类型是无序的,存储和读取时会导致JSON文本的顺序丢失。在本文中,我将向你展示如何通过使用MySQL内置函数和一些额外的代码来解决这个......
  • useradd -r -g mysql mysql
    Linux用户管理命令useradd在Linux系统中,useradd命令用于创建用户账号。useradd命令具有丰富的选项和参数,可以根据不同的需求创建不同类型的用户账号。本文将介绍useradd命令中的常用选项和参数,并以useradd-r-gmysqlmysql为例进行说明。useradd命令的常用选项和参数常用选项......
  • 两个字段相加的值排序 mysql
    实现“两个字段相加的值排序mysql”介绍在MySQL数据库中,我们经常会遇到需要对两个字段相加的值进行排序的需求。这个过程可以通过使用MySQL的ORDERBY语句来实现。在本文中,我将指导你实现这个功能的步骤,并提供相应的代码示例。实现步骤下面是实现“两个字段相加的值排序mysql......
  • 利用mysql存储过程备份数据
    使用MySQL存储过程备份数据的步骤为了实现使用MySQL存储过程备份数据,我们需要完成以下步骤:步骤说明步骤一创建一个存储过程步骤二定义变量和游标步骤三获取需要备份的数据步骤四将备份数据插入到备份表步骤五关闭游标和结束存储过程接下来,我将逐步......
  • 蓝凌OA用的是mySQL
    MySQL简介和应用于蓝凌OA的示例代码1.MySQL简介MySQL是一个开源的关系型数据库管理系统(RDBMS),广泛应用于各种网站和应用程序中。它是最受欢迎的数据库之一,具有以下特点:性能强大:MySQL通过优化查询引擎、索引和缓存等技术提供高效的数据处理能力。可扩展性:MySQL可以轻松......
  • 升级mysql客户端
    升级MySQL客户端MySQL是一种常用的关系型数据库管理系统,它的客户端用于与MySQL服务器进行通信。为了提高性能和功能,我们可能需要升级MySQL客户端。本文将介绍如何升级MySQL客户端以及一些常见的升级错误和解决方法。升级方式升级MySQL客户端有多种方式,最常见的是通过软件包管理......