★数据库建表优化

news2024/9/28 17:26:09

1、冷热分离: 一个表里最好不要存在即有常修改的数据又有不常修改的数据,一个好的做法是,把常修改更新的字段当做热表单独建表,同理不经常修改更新的字段当做冷表单独建表。

2、控制B+树的高度: 也就是控制一个表存储的数据行最好在300万到500万数据之间。

3、优先选择符合存储的最小数据类型: 并且例如varchar这种可变大小设置为2的n次方是一个好习惯。

4、禁止存放图片与文件: 因为图片或者文件数据过大,存储的时候会直接溢出变成BLOB,可以选择存储图片或文件的存放位置。

5、BLOB或TEXT单独存放: 单独存放这些会减少表所占大小,因为这两个数据存储很大。

6、禁止设置Null: 所有字段必须设置默认值,并且不允许为 null,如果一个字段没有设置默认值,而且允许为 null,那么在插入数据时,如果不显式地指定该字段的值,那么该字段的值就会是 null,这可能导致数据错误或逻辑混乱。

7、小数类型禁止使用 float 和 double : 在 MySQL 中,小数类型包括 float、double、decimal,虽然 float 和 double 可以存储比 decimal 更大的数值,但它们的精度问题可能会导致计算结果出错。

8、单表字段不要超过30个: 如果一个表中的字段太多,可能会导致 MySQL 性能下降、工作量增加。

9、单表索引数不要超过 5 个 : 在数据库中,为了提高查询效率,我们通常会在表的字段上创建索引。但是,索引会占用磁盘空间,维护索引也需要时间和资源。如果过度创建索引,将会导致查询变慢。建议:a.在确定要创建哪些索引时,可以优先考虑常用的查询条件和需要频繁更新的字段。例如:如果经常按日期范围查询,则可以在日期字段上创建索引。b.在创建索引时,避免在具有大量重复值的列上创建索引,会浪费磁盘空间(例如给性别字段创建索引)。c.使用索引优化器来确定哪些索引最适合特定查询。索引优化器可以帮助我们避免创建不必要的索引,并确保查询性能的最大化。d.建议使用联合索引。

10、 in过滤 条件中数量不宜过多: 在使用 IN 语句时:a.尽可能减少 IN 语句中包含的值的数量。b.如果需要查询多个值,可以考虑使用多个 OR 条件来替代 IN 语句。c.如果在 IN 语句中包含大量的值时,需要考虑使用其他的查询方式,常见的优化方法是将 IN 语句替换成 EXISTS 子查询。

11、尽可能的不用外键关联,改用存储关联id

12、使用like查询注意: like ‘%mysql’ 和 like ‘%mysql%’ 会无法用到索引,like ‘mysql%’可以用到索引。

13、选择合适的搜索引擎:
在这里插入图片描述

14、固定长度的表会更快::变长的字段: VARCHAR,TEXT,BLOB。只要你的表中包括了其中一个这些字段,就不属于定长表。

15、设置主从读写分离

16、解决随机取值慢优化: Mysql解决随机选取问题

17、解决count()优化: Mysql count()为啥慢

18、语句不走索引的问题排查与优化: Mysql 不执行索引问题与优化

其他博客参考: 1、参考一

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

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

相关文章

四、Lua循环

文章目录 一、while(循环条件)二、for(一)数值for(二)泛型for(三)repeat util 既然同为编程语言,那么控制逻辑里的循环就不能缺少,它可以帮助我们实现有规律的重复操作,而…

GoLong的学习之路,进阶,RabbitMQ (消息队列)

快有一周没有写博客了。前面几天正在做项目。正好,项目中需要MQ(消息队列),这里我就补充一下我对mq的理解。其实在学习java中的时候,自己也仿照RabbitMQ自己实现了一个单机的mq,但是mq其中一个特点也就是&a…

单片机薪资翻倍的学习方向

今天以一个案例,给大家分析下做单片机开发,薪资翻倍的底层逻辑和方法论,尽量做到有理有据。 我是2011年开始做单片机开发的,那几年,单片机的工资,可以说是惨不忍睹。 相关贴吧也是一片哀嚎,有些…

伦敦金新手和有经验的投资者 他们有什么不同?

按照笼统的分类,伦敦金市场中的投资者可以分为新手和有经验的,当然其中并没有明确的界限,不是说投资者做伦敦金交易满2年就一定会成为有经验的投资者。但是从下面我们的对比中,我们或许可以看出新手和有经验投资者的一些差别。 先…

「琥珀黄」农产品销售运营大屏助力农产品销售改革

农业作为国家经济的重要支柱产业,农产品销售一直备受关注。农产品销售一直是农业行业关注的焦点之一。随着科技进步和市场竞争的加剧,传统的销售方式面临着新的挑战。为了让农产品销售实现腾飞,我们需要打破传统,采用新的销售策略…

自然资源科普交互大屏助力自然资源的保护

在当代社会,自然资源的科学管理和可持续利用变得愈发重要。为了提高公众对于自然资源的认知和理解,科普交互大屏成为一个新兴的工具。它通过生动的图像和实时数据展示,以及与观众的互动方式,让人们更深入地了解自然资源和环境保护…

【Leetcode】907. 子数组的最小值之和

给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 由于答案可能很大,因此 返回答案模 10^9 7 。 示例 1: 输入:arr [3,1,2,4] 输出:17 解释&…

Spine深入学习———— 渲染

数据有了之后,就开始渲染 渲染相关 绘制顺序 骨架的绘制顺序就是一个插槽列表,在插槽列表中上方的附件在下方之上绘制,绘制顺序可以在层级树中的骨架下查看。 基础流程 渲染实现 以下按照cocos2dx的实现来 (cocos2dx 3.7 spin…

leetCode 216.组合总和 III + 回溯算法 + 剪枝 + 图解 + 笔记

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 解释…

两部手机数据传输后备忘录不见了怎么回事

想必很多人都遇到过,当两部手机进行备忘录数据传输后,突然发现备忘录不见了,这让人不禁着急上火,我也曾经遇到过这种事情导致很多重要的内容都丢失了。 一般出现这种情况可能是因为,两部手机使用的是不同的云服务&…

重生奇迹MU魔法师操作技能

重生奇迹MU魔法师增加伤害加点方式 一、智力敏捷加点:2点智力1点敏捷,这种加点就是智敏结合的加点了,属性是不错的,提升了非常多的属性点,智力是偏重输出的,也是法师最常见的一种加点了,输出伤…

Mac电脑音乐标签管理 Yate 激活最新 for Mac

Yate是一款非常实用的音频编辑和标记软件,它提供了丰富的功能和工具来帮助用户编辑、整理和管理音频文件。无论是在音乐收藏管理、DJ和音乐制作方面,还是在其他需要处理大量音频文件的领域,Yate都是非常值得推荐的工具。 Yate for Mac功能特…

Java线程同步

认识线程同步 解决方案 方法一:同步代码块 package com.itheima.d3;public class ThreadTest {public static void main(String[] args) {Accout acc new Accout("ICBC-110",100000);new DrawThread(acc,"小明").start();//小明new DrawThread…

phpstudy安装redis

Redis 是一个开源的高性能键值存储数据库,广泛用于缓存、消息队列、会话管理和实时数据分析等应用场景。 使用 PHP Redis 扩展,你可以在 PHP 代码中使用一系列的函数来连接到 Redis 服务器,并执行各种操作,如设置和获取键值对、操…

ubuntu配置ssh

本教程中的涉及路径的所有命令都是在root用户下的,读者可将路径中的/root更改为/home/用户名 1、重置密码 新安装的系统需要在服务器控制台点击“重置密码”,为root用户设置一个密码 ————————————————————————————————…

城市安全守护者:分析无人机在交通领域的应用

随着科技的进步,无人机在交通领域的应用不断增加,为智慧交通管理提供了新便利。无人机凭借其灵活性,在违章取证、交通事故侦查、交通疏导等方面展现出巨大的应用潜力。无人机在交通领域的应用有哪些?跟着我们一探究竟。 1、违章取…

同为科技(TOWE)模块化定制化让每条PDU实现专属供电解决方案

作为追求最高功率和空间效率的动态数据中心的理想产品,模块化、定制化PDU是追求最高功率和空间效率的动态数据中心的理想产品。同为科技(TOWE)是我国PDU行业的开创者和领导者,曾率先于中国电源分配单元http://www.pdu.com.cn网站上…

第13周 预习、实验与作业:Java网络编程

目录 1 课前问题列表 1.编写一个网络程序,为了与其他网络程序通信,至少要知道对方的什么信息? 2.TCP与UDP协议有什么不同的呢?什么时候该选择哪种协议?HTTP使用的是TCP还是UDP?不重要的短信息传送之类的功能…

Docker Compose;docker-compose;docker compose

(一) Docker Compose | 菜鸟教程 --> --> --> -->

借助工具落地提高外包软件项目代码提交规范

随着外包软件项目的不断增加,代码提交规范成为了一个必须解决的问题。由于外包项目的特殊性,很难保证每个开发者都按照统一的规范开发代码。为了解决这个问题,我们可以借助工具来提高代码提交规范。Codigger这个工具来解决外包软件项目中的代…