1、mysql中,VARCHAR(N)中的N代表的是字符数,而不是字节数。例如VARCHAR(255)表示可以保存255的中文

2、过大的长度会消耗更多的内存。VARCHAR(N),存储时是按照数据实际长度存储的。当把数据读入到内存时,为了提高效率,是按照N的长度分配内存的。

3、尽可能将所有列定义为NOT NULL。

a、索引NULL列,需要额外的空间来保存,所以要占用更多的空间。

b、进行比较和运算时要对NULL值做特别的处理,同时可能导致索引失效。

4、避免数据类型的隐式转换。隐式转换会导致索引失效。

例如select * from tablea where id = '123',这里id其实是整数类型的,这就出现了隐式转换

5、充分利用表上已经存在的索引

a、避免使用双%号或前置%的查询条件。如a like '%123%'或a like '%123',这些可能无法使用索引。

b、一个SQL只能利用到复合索引中的一列进行范围查询

例如联合索引(a,b,c) ,如果对a的都是范围查询的话,那么对于b和c的索引是用不到的。这时,应该把a类放在最右侧,即(b,c,a)

c、使用left join或not exists来优化not in操作。not in通常会使索引失效

d、在mysql优化生成执行计划时,会比较各个索引的效率,进而生成最终的执行计划。过多的索引,会导致这个过程变慢,进而体现在sql的执行时间上

6、禁止使用不含字段列表的INSERT语句,例如INSERT INTO T VALUES(A,B,C),这样表结构变化可能会导致兼容异常。应该为INSERT INTO T(c1,c2,c3) VALUES(A,B,C)

7、避免使用子查询,可以把子查询优化为join操作。

a、子查询的结果集无法使用索引

b、子查询会产生历史表的操作(子查询结果一般会保存在临时表中,无论是内存临时表或是数据库临时表,他们不会使用到索引),如果子查询数据量大则严重影响效率

c、因为子查询会查询临时表,且不使用索引,所以数据量大时,会消耗过多的CPU及IO资源

8、避免使用JOIN关联太多的表

a、每join一个表会多占一部分内存(join_buffer_size)

b、会产生临时表操作,影响查询效率

c、MySQL最多允许关联61个表,建议不超过5个

9、减少同数据库的交互次数

a、数据库更适合处理批量操作

b、合并多个相同的操作到一起,可以提高处理效率

10、对于同一列,使用in代替or,in内的数据最好不超过500个。个人经过explain执行计划,似乎没有发现这条规律。

11、WHERE从句中禁止对列进行函数抓换和计算,否则会导致无法使用索引。

例如where date(createtime) = '20160901',无法使用索引。

12、在明显不会有重复值时使用union all而不是union。

a、union会把所有数据放在临时表中后再进行去重操作

b、union all不会再对结果集进行去重操作

MYSQL 开发总结的更多相关文章

  1. Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试

    Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试一.下载相关安装包 1.下载nginx最新版本(nginx1.3.13版之后才支持websocket协议) 下载地址 ...

  2. 深入理解MySQL开发性能优化.pptx

    深入理解MySQL开发性能优化.pptx,依旧上传baidu pan http://pan.baidu.com/s/1jIwGslS,视频暂未出,培训完成后会更新.

  3. 【MySql】赶集网mysql开发36条军规

    [MySql]赶集网mysql开发36条军规 2012-05-14 14:02:33 分类: Linux   写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒 ...

  4. mysql开发中使用存储过程

    在mysql开发中使用存储过程的理由: 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的 mysql 执行语句是要先编译,然后再执行的.这样如果查询并发大的时候. ...

  5. [转载] 根据多年经验整理的《互联网MySQL开发规范》

    原文: http://weibo.com/p/2304181380b3f180102vsg5 根据多年经验整理的<互联网MySQL开发规范> 写在前面:无规矩不成方圆.对于刚加入互联网的朋 ...

  6. [转发] 老叶观点:MySQL开发规范之我见

    原文: http://imysql.com/2015/07/23/something-important-about-mysql-design-reference.shtml 老叶观点:MySQL开发 ...

  7. express框架+jade+bootstrap+mysql开发用户注册登录项目

    完整的项目代码(github):https://github.com/suqinhui/express-demo express是基于Node.js平台的web应用开发框架,用express框架开发w ...

  8. MySQL开发指南

    数据库开发是数据库管理系统(DBMS)和数据库应用软件设计研发的总称,数据运维.参与数据库生产环境的问题优化和解决等方面的事宜. 1.关于MySQL数据库 2.搭建MySQL环境 3.入门常用SQL. ...

  9. 第一篇:Win10系统搭建Python+Django+Nginx+MySQL 开发环境详解(完美版)

    Win10+Python+Django+Nginx+MySQL 开发环境搭建详解 PaulTsao 说明:本文由作者原创,仅供内部参考学习与交流,转载引用请注明出处,用于商业目的请联系作者本人. Wi ...

  10. mysql 开发进阶篇系列 55 权限与安全(安全事项 )

    一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...

随机推荐

  1. 刘志梅 201771010115 《面向对象程序设计(java)》 第七周学习总结

    实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: 即将类中的域标记为private,而方法标记为public.任何声明为priv ...

  2. Scala map与flatMap

    1. map函数   对集合的每一个元素运用某个函数操作,然后将结果作为一个新的列表返回. 实例1:将列表中每个元素值乘以2 scala> val list1=List(1,2,3,4) lis ...

  3. 用PS做圆角图片

    ps: Adobe Photoshop CS2  如果图片被锁定,请“双击”图层中“背景”解锁,如果没有图层菜单,在最上面导航栏中:窗口—图层.如下图:  点“确定”,解锁.  选用“圆角矩形工具”. ...

  4. FPGA editor 的使用之一 ------ Probe探针

    做FPGA设计经常会用到FPGA editor工具,今天开始总结下使用FPGA editor工具的经验. 1.添加probes 在debug时,经常要分析设计中的某一个信号的状态变化,需要观测这个信号 ...

  5. List 的add()与addAll()的区别

    add 是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素addAll 是传入一个List,将此List中的所有元素加入到当前List中,也就 ...

  6. httpput

    String doHttpPut(String rpmName, String cookie) throws UnsupportedEncodingException, IOException, Cl ...

  7. Tomcat的目录结构详细介绍(超全)

    打开tomcat的解压之后的目录可以看到如下的目录结构:  1.bin: bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(w ...

  8. dir函数

    dir函数: dir() 是一个内置函数,用于列出对象的所有属性及方法 下面进行尝试: 用下面两个tests test2文件做实验 #创建一个类,两个常量,类中函数test1,类中属性, class ...

  9. python爬虫之解析库Beautiful Soup

    为何要用Beautiful Soup Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式, 是一个 ...

  10. c#随机生成英文名

    private static string GenerateSurname() {     string name = string.Empty;     string[] currentConson ...