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

设计表的时候

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. nbuoj2784 倒水

    题目:http://www.nbuoj.com/v8.83/Problems/Problem.php?pid=2784 一天,TJ买了N个容量无限大的瓶子,开始时每个瓶子里有1升水.接着TJ决定只保留 ...

  2. CF600E Lomsat gelral (启发式合并)

    You are given a rooted tree with root in vertex 1. Each vertex is coloured in some colour. Let's cal ...

  3. Day 05 文本处理和爬虫基础1

    目录 什么是文件 什么是文本 如何通过文本编辑器控制.txt文件 打开文件的三种模式 t和b模式 高级应用 文本处理 + 词云分析 效果如下 爬虫原理 requests模块 re模块 爬取图片 爬取视 ...

  4. 【重温基础】JS中的常用高阶函数介绍

    Ps. 晚上加班到快十点,回来赶紧整理整理这篇文章,今天老大给我推荐了一篇文章,我从写技术博客中收获到了什么?- J_Knight_,感受也是很多,自己也需要慢慢养成记录博客的习惯,即使起步艰难,难以 ...

  5. 《Dotnet9》建站-本站Logo设计之路

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

  6. Maven使用教程三:maven的生命周期及插件机制详解

    前言 今天这个算是学习Maven的一个收尾文章,里面内容不局限于标题中提到的,后面还加上了公司实际使用的根据profile配置项目环境以及公司现在用的archetype 模板等例子. 后面还会总结一个 ...

  7. C#界面设计相关设置

    1.Anchor属性设置 对需要设置的控件,如主窗体中的TextBox,设置Anchor为上下左右都停靠,就会实现随着窗体的变化而变化. 2.AutoScaleMode属性的用法:<转自:htt ...

  8. HTTP认知(请求与响应)

    web的工作是:浏览器发送请求报文 + 服务端返回响应报文 通俗的说一下web工作的一个流程: 浏览器向服务端发送HTTP请求报文:这条请求报文组成由请求行.请求头.请求体三大部分组成: 1.请求行 ...

  9. 解决“fatal: 'origin' does not appear to be a git repository...”

    当使用Git进行代码push提交时,出现报错信息“fatal: 'origin' does not appear to be a git repository...”, $ git push -u o ...

  10. Linux kernel中常见的宏整理

    0x00 宏的基本知识 // object-like #define 宏名 替换列表 换行符 //function-like #define 宏名 ([标识符列表]) 替换列表 换行符 替换列表和标识 ...