首页 > 数据库 >MySQL优化

MySQL优化

时间:2023-10-11 16:58:22浏览次数:47  
标签:建议 1.1 timestamp tinint MySQL 类型 优化

1.性能优化:

  1.1 表结构优化(下述建议针对数据量巨大,每一点空间都需要节省的情况,当然在设计初期能考虑到以下建议最好)

    A:字段设计优化

    1.1.1 整数类型:

        1.对于整数int类型,数据量较大的情况下建议区分tinyint,int,bigint,三者所占据的空间有很大的差别,比如年龄,用tinint就可以了,没必要用后面两者,年龄再大也不过一百。

         2.能确定不会使用负数,建添加unsigend定义,也是有效利用空间,比如还是年龄,tinint最大127,使用无符号的tinint最大值就变成255,就更加恰当。

         3.固定精度的小数,不建议decimal,建议乘以固定倍数转成整数,可以大大大节省空间。

    1.1.2 字符类型:

        1. 定长字段,建议char类型

        2. 不定长尽量varchar,且仅仅设定设当最大长度

        3. 万不得已不使用text类型,其性能比varchar还要低

        4. 建议使用整数存储定长字符,比如ip

    1.1.3 时间类型

      1. 尽量使用timestamp类型代替datetime, 其只占datetime的一半空间,但timestamp有一个特点就是不同时区查出来的不一样,还可以设置是否更新数据时自动更新时间。

      2. 对于精确到 天的类型,用date类型就行只占三个字节,比timestamp还少

     B:适当拆分:对于不经常查询的字段,尽量拆分出来放在另一个表,这样IO次数也会减少

    C:适当冗余:对于频繁查询且需关联两张表查询的可以将其中一张表的某些字段适当冗余到一张表,但是要注意对于修改操作更加麻烦

    D:尽量使用not null,NULL比较特殊,难以优化

  1.2 索引优化

    1.2.1  对于联合索引,遵循最左前缀原则

标签:建议,1.1,timestamp,tinint,MySQL,类型,优化
From: https://www.cnblogs.com/lvqiang/p/17757470.html

相关文章

  • mysql 删除数组 json 字段中的某个指定值
    例:SELECTcar_imgFROMlogistics_car_infoWHEREcar_id=2--结果为:["1","2","3","4"]SELECTJSON_SEARCH(car_img,'one','4')FROMlogistics_car_infoWHEREcar_id=2--结果为:"$[3]"SELE......
  • MySQL的行锁和表锁机制
    一、引言​ 在数据库管理系统中,锁是用来控制对数据的访问的机制。MySQL既支持行级锁(Row-levelLocking),也支持表级锁(Table-levelLocking)。​ MySQL引擎中,MyISAM不支持行锁,而InnoDB支持行锁和表锁。二、行锁(Row-levelLocking)​ 行锁是指对数据表中的一行记录进行锁定,其他事......
  • 7min到40s:SpringBoot 启动优化实践!
    0背景公司SpringBoot项目在日常开发过程中发现服务启动过程异常缓慢,常常需要6-7分钟才能暴露端口,严重降低开发效率。通过SpringBoot的SpringApplicationRunListener、BeanPostProcessor原理和源码调试等手段排查发现,在Bean扫描和Bean注入这个两个阶段有很大的性能......
  • mysql 中 timestampdiff 一个让人费解的问题
    取当前时间 使用上面取到的时间与now()使用timestampdiff进行month级别比较 将上面取到的日期递增一个月再次比较 结果让人很费解 在此给自己提个醒,mysql单纯使用日期还是用 current_date吧......
  • 在Ubuntu22.04上安装MySQL-Server,并配置可视化界面SQL-Workbench
    在Ubuntu22.04上安装MySQL-Server,并配置可视化界面MySQL-Workbench彻底删除MySQL若您是首次,在Ubuntu22.04上崭新安装mysql,可以略过该步。首先卸载mysql-common:sudoapt-getremovemysql-common然后卸载已经安装的mysql-server:sudoapt-getautoremove--purgemysql-ser......
  • mysql插入数据时遇到的问题
    1、 Illegalmixofcollations(latin1_swedish_ci,IMPLICIT)and(utf8mb4_general_ci,COERCIBLE)foroperation'=' 解决:原因:因为新创建的表字符集是latin1_swedish_ci,而原有的字符集需要utf8mb4_general_ci,所以报错。ALTERTABLE表名CONVERTTOCHARACTER......
  • 基于 ACK Fluid 的混合云优化数据访问(二):搭建弹性计算实例与第三方存储的桥梁
    作者:车漾前文回顾:本系列将介绍如何基于ACKFluid支持和优化混合云的数据访问场景,相关文章请参考:基于ACKFluid的混合云优化数据访问(一):场景与架构在前文《场景与架构》中,重点介绍ACKFluid支持混合云数据访问适用的不同应用场景和架构实现。在本文中会重点介绍如何通过ACKFl......
  • Debian12安装MySQL8实践及问题解决方案
    Debian12安装MySQL数据库,常规操作:sudoaptsearchmysql&sudoaptinstallmysql,肯定是行不通的,因为没有安装包。把我的安装过程以及遇到问题的解决方案记录下来,供大家借鉴。第一步更新系统、下载软件包命令如下:sudoaptupdatewgethttps://dev.mysql.com/get/mysql-apt-co......
  • 用Python爬虫实现个性化搜索优化
    在当今信息爆炸的时代,传统的SEO手段已经不再足够。为了更好地满足用户个性化需求,我们需要突破传统SEO的限制,采用更智能、更个性化的优化方法。本文将介绍如何利用Python爬虫实现个性化搜索优化,让您的网站在用户搜索中脱颖而出。通过个性化搜索优化,您将能够更好地了解用户需求、提供......
  • MySQL使用cmd窗口命令导入数据库
    如下:setgloballog_bin_trust_function_creators=1;--导入数据库之前做准备SETGLOBALlog_bin_trust_function_creators=TRUE;cmd命令窗口执行如下导入命令命令行登录mysqlmysql-uroot-pxxx;mysql>usedatabasename;mysql>sourced:/xxx.sqlend......