---恢复内容开始---

设计表的时候

1. 不同的表涉及同一个公共意义字段不要使用不同的数据类型(可能导致索引不可用,查询结果有偏差)
2. 不要一张表放太多的数据     主表20~30个字段     其他表最好不超过20个
3. 最好不要有为Null的列,原因:https://mp.weixin.qq.com/s/U4RRNVj5BKwkQ-CWmPd9Fg
4. 如果存储的字符串长度几乎相等,使用char定长字符串类型
5. varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为text,独立出来一张表, 用主键来对应,避 免影响其他字段索引效率;
6. 小数类型为 decimal,禁止使用 float 和 double;float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不 正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。
7. 禁用保留字,如desc、range、match、delayed 等,请参考 MySQL 官方保留字

查询表的时候

1. 最好不要使用联表查询(风险不可控)【理论上禁止】
2. 不要在字段当中进行函数运算【禁止】
3. 尽量不要使用now()函数进行查询【禁止】
4. 查询时只查询用到的字段,不要使用 “*”查询       说明:1)增加查询分析器解析成本。2)增减字段容易与 resultMap 配置不一致。
5. 删除全表数据的时候用truncate而不是delete
6. 尽量不要使用模糊匹配 '%abc%'【理论上禁止】
7. sql语句不要写的过于复杂,逻辑判断尽量在内存中完成
8. 不要加入触发器
9. 使用explain查看执行计划
 
加索引的时候
1. 添加索引的字段一定要有很好的区分度【cardinality】
2. 更新数据的时候最好使用主键作为更新条件
3. 加入联合索引要把区分度高的字段放在前面
4. 不常访问的列不要加索引
5. 长字符串不要加索引,如果一定要加,选取字符串的前n位加上。(n根据实际情况设定,经验值不会超过20)
6. 唯一索引名为 uk_字段名;普通索引名则为 idx_字段名;
 

---恢复内容结束---

设计表的时候

1. 不同的表涉及同一个公共意义字段不要使用不同的数据类型(可能导致索引不可用,查询结果有偏差)
2. 不要一张表放太多的数据     主表20~30个字段     其他表最好不超过20个
3. 最好不要有为Null的列,原因:https://mp.weixin.qq.com/s/U4RRNVj5BKwkQ-CWmPd9Fg
4. 如果存储的字符串长度几乎相等,使用char定长字符串类型
5. varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为text,独立出来一张表, 用主键来对应,避 免影响其他字段索引效率;
6. 小数类型为 decimal,禁止使用 float 和 double;float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不 正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。
7. 禁用保留字,如desc、range、match、delayed 等,请参考 MySQL 官方保留字

查询表的时候

1. 最好不要使用联表查询(风险不可控)【理论上禁止】
2. 不要在字段当中进行函数运算【禁止】
3. 尽量不要使用now()函数进行查询【禁止】
4. 查询时只查询用到的字段,不要使用 “*”查询       说明:1)增加查询分析器解析成本。2)增减字段容易与 resultMap 配置不一致。
5. 删除全表数据的时候用truncate而不是delete
6. 尽量不要使用模糊匹配 '%abc%'【理论上禁止】
7. sql语句不要写的过于复杂,逻辑判断尽量在内存中完成
8. 不要加入触发器
9. 使用explain查看执行计划
 
加索引的时候
1. 添加索引的字段一定要有很好的区分度【cardinality】
2. 更新数据的时候最好使用主键作为更新条件
3. 加入联合索引要把区分度高的字段放在前面
4. 不常访问的列不要加索引
5. 长字符串不要加索引,如果一定要加,选取字符串的前n位加上。(n根据实际情况设定,经验值不会超过20)
6. 唯一索引名为 uk_字段名;普通索引名则为 idx_字段名;
7.少用数据库函数,比如sysdate(),可以改为传入一个当前时间
8.根据具体业务,创建联合索引
9.索引庞大会导致索引文件太大,可以加一张中间表来解决
     例如:报价中状态单据,定时任务扫描更新处理
10.xml文件里面没有添加jdbc-type,传入map类型,字段类型不符合的话,mysql会强制类型转换,但不会走索引
 

mysql实践:sql优化的更多相关文章

  1. mysql的sql优化案例

    前言 mysql的sql优化器比较弱,选择执行计划貌似很随机. 案例 一.表结构说明mysql> show create table table_order\G***************** ...

  2. 我的mysql数据库sql优化原则

    原文 我的mysql数据库sql优化原则 一.前提 这里的原则 只是针对mysql数据库,其他的数据库 某些是殊途同归,某些还是存在差异.我总结的也是mysql普遍的规则,对于某些特殊情况得特殊对待. ...

  3. MySQL之SQL优化详解(二)

    目录 MySQL之SQL优化详解(二) 1. SQL的执行顺序 1.1 手写顺序 1.2 机读顺序 2. 七种join 3. 索引 3.1 索引初探 3.2 索引分类 3.3 建与不建 4. 性能分析 ...

  4. 基于MySQL 的 SQL 优化总结

    文章首发于我的个人博客,欢迎访问.https://blog.itzhouq.cn/mysql1 基于MySQL 的 SQL 优化总结 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 ...

  5. 【MySQL】SQL优化系列之 in与range 查询

    首先我们来说下in()这种方式的查询 在<高性能MySQL>里面提及用in这种方式可以有效的替代一定的range查询,提升查询效率,因为在一条索引里面,range字段后面的部分是不生效的. ...

  6. mysql索引sql优化方法、步骤和经验

    MySQL索引原理及慢查询优化 http://blog.jobbole.com/86594/ 细说mysql索引 https://www.cnblogs.com/chenshishuo/p/50300 ...

  7. (1.10)SQL优化——mysql 常见SQL优化

    (1.10)常用SQL优化 insert优化.order by 优化 1.insert 优化 2.order by 优化 [2.1]mysql排序方式: (1)索引扫描排序:通过有序索引扫描直接返回有 ...

  8. MySQL之SQL优化详解(一)

    目录 慢查询日志 1. 慢查询日志开启 2. 慢查询日志设置与查看 3.日志分析工具mysqldumpslow   序言: 在我面试很多人的过程中,很多人谈到SQL优化都头头是道,建索引,explai ...

  9. Mysql的SQL优化指北

    概述 在一次和技术大佬的聊天中被问到,平时我是怎么做Mysql的优化的?在这个问题上我只回答出了几点,感觉回答的不够完美,所以我打算整理一次SQL的优化问题. 要知道怎么优化首先要知道一条SQL是怎么 ...

  10. BATJ解决千万级别数据之MySQL 的 SQL 优化大总结

    引用 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提高程序性能,还能减低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL 逻 ...

随机推荐

  1. 使用flink实现一个topN的程序

    topN功能是一个非常常见的功能,比如查看最近几分钟的阅读最高数,购买最高数. flink实现topN的功能也非常方便,下面就开始构建一个flink topN的程序. 还是像上篇博客一样,从kafka ...

  2. enumerate用法总结

    enumerate在字典上是枚举.列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 enumerat ...

  3. Docker学习-jenkins+github实现持续集成和部署

    上一篇介绍了docker环境搭建,本篇继续深入,结合jenkins利用docker-compose容器编排简单介绍下如何实现个人学习的持续集成/部署. 本篇学习曲线: 1.安装/运行jenkins容器 ...

  4. 【JS】369- 20个常用的JavaScript字符串方法

    点击上方"前端自习课"关注,学习起来~ 作者:前端小智 https://segmentfault.com/a/1190000020204425 本文主要介绍一些最常用的JS字符串函 ...

  5. tomcat安装与环境变量配置

    1.安装tomcat 2.找到tomcat安装路径的bin文件夹 → 打开 startup.bat 3.打开浏览器输入网址 http://localhost:8080 4.配置CATALINA_BAS ...

  6. Vue底层实现原理总结

    要实现MVVM 响应式原理,要实现如下几点 1.实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者 2.实现一个指令解析器Compile,对每个元素 ...

  7. IPV6技术笔记(剖析IPv4toIPv6)

    IPV6技术笔记 IPv6地址入门概念 什么是IPv6? IPv6,全称Internet Protocol version 6,即网际协议版本6,也叫互联网通信协议第六版.是互联网工程任务组(IETF ...

  8. 在 Windows 10 上搭建 Cordova 跨平台开发 Android 环境

    目录 安装 Cordova 安装 Java 和 Android 环境 创建 Cordova 应用程序 构建和运行 Cordova Cordova 简介:Cordova 原名 PhoneGap,是一个开 ...

  9. 从头实现一个WPF条形图

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  10. C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容

    目录 一.事故现场 二.解决方法 一.事故现场 使用WebClient发送请求,如果返回的状态码不是2xx或3xx,那么默认情况下会抛出异常, 那如何才能获取到请求返回的内容呢? 二.解决方法 可以通 ...