Mysql优化是一个老生常谈的问题,

优化的方向也优化很多:从架构层;从设计层;从存储层;从SQL语句层;

今天讲解一下从索引和字段:

字段优化:

①  尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED;

②  VARCHAR的长度只分配真正需要的空间;

③  使用枚举或整数代替字符串类型;

④  尽量使用TIMESTAMP而非DATETIME;

⑤  单表不要有太多字段,建议在20以内;

⑥  避免使用NULL字段,很难查询优化且占用额外索引空间;

⑦  用整型来存IP;

索引优化:

①  索引并不是越多越好,要根据查询有针对性的创建,考虑在WHERE和ORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描;

②  应尽量避免在WHERE子句中对字段进行NULL值判断,否则将导致引擎放弃使用索引而进行全表扫描;

②  值分布很稀少的字段不适合建索引,例如”性别”这种只有两三个值的字段;

③  字符字段只建前缀索引;

④  字符字段最好不要做主键;

⑤  不用外键,由程序保证约束;

⑥  尽量不用UNIQUE,由程序保证约束;

⑦   使用多列索引时主意顺序和查询条件保持一致,同时删除不必要的单列索引;

后续会更新其余方面针对Mysql优化的建议.有疑问请直接给我留言.

Mysql优化之索引和字段的更多相关文章

  1. mysql 优化之索引的使用

    mysql 优化之索引的使用 1:MySQL 索引简介: MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL ...

  2. mysql优化之索引篇

    对mysql优化是一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] c: 分表技术(水平 ...

  3. 第九课——MySQL优化之索引和执行计划

    一.创建索引需要关注什么? 1.关注基数列唯一键的数量: 比如性别,该列只有男女之分,所以性别列基数是2: 2.关注选择性列唯一键与行数的比值,这个比值范围在0~1之前,值越小越好: 其实,选择性列唯 ...

  4. mysql优化之索引建立的规则

    索引经常使用的数据结构为B+树.结构例如以下 如上图,是一颗b+树,关于b+树的定义能够參见B+树,这里仅仅说一些重点.浅蓝色的块我们称之为一个磁盘块,能够看到每一个磁盘块包括几个数据项(深蓝色所看到 ...

  5. mysql优化之索引优化

    Posted by Money Talks on 2012/02/23 | 第一篇 序章第二篇 连接优化第三篇 索引优化第四篇 查询优化第五篇 到实战中去 索引优化 索引优化涉及到几个方面,包括了索引 ...

  6. mysql优化整理(索引)

    什么是索引? 索引是表记录的单个或多个字段重新组织的一种方法,其目的是提高数据库的查询速度,本质上就是一种数据结构. 索引的类型:primary(主键).secondary(其他) 索引的数据结构 I ...

  7. MySQL优化四 索引优化

    索引为什么能提高数据访问性能? 很多人只知道索引能够提高数据库的性能,但并不是特别了解其原理,其实我们可以用一个生活中的示例来理解. 我们让一位不太懂计算机的朋友去图书馆确认一本叫做<MySQL ...

  8. Mysql优化之索引

    前言 这几天抽了个时间将<高性能Mysql>看了一下忽觉索引非常之重要,习之然后总结巩固知识.本文索引使用的是InnoDB存储引擎.因为本文并不是说用索引的好处,所以并不会书写QPS之类的 ...

  9. 【Mysql优化】索引优化策略

    1:索引类型 1.1 B-tree索引 注: 名叫btree索引,大的方面看,都用的平衡树,但具体的实现上, 各引擎稍有不同, 比如,严格的说,NDB引擎,使用的是T-tree   Myisam,in ...

随机推荐

  1. Continuity of arithmetic operations

    Arithmetic operations taught in elementary schools are continuous in the high level topological poin ...

  2. pyzmq学习笔记

    前言 使用过简单的python的ZMQ:server开启3个线程,client发送心跳包,如果服务端超过n秒没应答,则重新连接. 网上找的案例,server使用的zmq.device,但是一直不明白什 ...

  3. 使用Linux命令行测试网速

    安装speedtest speedtest是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行.它基于Speedtest.net的基础架构来测量网络的上/下 ...

  4. SLogViewer下载及使用说明

    SLogViewer 1.0使用说明 SLogViewer是一个基本开源界面库SOUI开发的开源的通用的高性能LOG分析工具, 轻松支持上百万行级别的LOG过滤.  支持LOG格式配置. 只要是固定格 ...

  5. flink学习

    flink介绍: Apache Flink is an open source platform for distributed stream and batch data processing. F ...

  6. C#代码总结04---通过创建临时表DataTable进行临时编辑删除

    <script type="text/javascript"> //删除 function Delete(hdGuid) { $("#hdGuid" ...

  7. 【C语言编程练习】7.1 线型表就地逆置

    写在前面的话:直接从第5章跳到了第7章数据结构的趣题,原因是前面的数学趣题做久了,会觉得稍许疲倦,所以想“变个口味”,以后数学趣题和数据结构混合着练习. 1. 题目要求 编写一个函数,实现顺序表的就地 ...

  8. PBRT笔记(8)——材质

    BSDF类 表面着色器会绑定场景中每一个图元(被赋予了这个着色器),而表面着色器则由Material类的实例来表示.它会拥有一个BSDF类对象(可能是BSSDF),用于计算表面上每一点的辐射度(颜色) ...

  9. 登录MES系统后台服务的操作

    一:使用GIt Bash Here打开服务 文件名:MES-Server-API-SC 输入:yarn server//打开服务 文件名:MES-server-API 输入:yarn local//本 ...

  10. 记录opencv编译过程

    准备学习opencv,参考了几个网页终于完成.编辑器和opencv版本都选择最新的版本. 记录过程如下 1. 下载准备: 1)         Opencv源码, 下载地址: https://sour ...