MySQL优化

**1. ** **避免使用 select * **      你需要什么信息,就查询什么信息,查询的多了,查询的速度肯定就会慢

2.  **当你只需要查询出一条数据的时候,要使用 limit 1 **  比如你要查询数据中是否有男生,只要查询一条含有男生的记录就行了,后面不需要再查了,使用Limit 1 可以在找到一条数据后停止搜索

3.   **建立高性能的索引 **  索引不是随便加的也不是索引越多越好,更不是所有索引对查询都有效

4.  建数据库表时,给字段设置固定合适的大小. 字段不能设置的太大,设置太大就造成浪费,会使查询速度变慢

5.   **要尽量使用not null   **

6.   EXPLAIN 你的 SELECT 查询使用EXPLAIN,可以帮助你更了解MySQL是如何处理你的sql语句的, 你可以查看到sql的执行计划,这样你就能更好的去了解你的sql语句的不足,然后优化语句.

7.  **在Join表的时候,被用来Join的字段,应该是相同的类型的,且字段应该是被建过索引的,这样,MySQL内部会启动为你优化Join的SQL语句的机制。 **

**8.   如果你有一个字段,比如“性别”,“国家”,“民族”, “省份”,“状态”或“部门”,这些字段的取值是有限而且固定的,那么,应该使用 ENUM 而不是 VARCHAR。  **

因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能**。**

**9.  垂直分割    **将常用和有关系的字段放在相同的表中,把一张表的数据分成几张表    这样可以降低表的复杂度和字段的数目,从而达到优化的目的

10.  优化where查询

**        ①. 避免在where子句中对字段进行表达式操作**

比如: select 列 from 表 where age*2=36;   建议改成  select 列 from 表 where age=36/2;

②. 应尽量避免在 where 子句中使用 !=或<> 操作符,否则将引擎放弃使用索引而进行全表扫描。

**        ③. 应尽量避免在 where 子句中对字段进行 null 值 判断**

**        ④. 应尽量避免在 where 子句中使用 or 来连接条件**

11.  不建议使用%前缀模糊查询,这种查询会导致索引失效而进行全表扫描

例如LIKE “%name”或者LIKE “%name%这两种都是不建议的.但是可以使用LIKE “name%”。

对于LIKE “%name%,可以使用全文索引的形式

**12.  要慎用in和 not in **

例如:select id from t where num in(1,2,3)   建议改成 select id from t where num between 1 and 3

对于连续的数值,能用 between 就不要用 in 了

** 13. 理解in和exists, not in和not exists的区别**

很多时候用 exists 代替 in 是一个好的选择:如查询语句使用了not in那么内外表都进行全表扫描,没用到索引,而not exists子查询依然能用到表上索引,所以无论哪个表大,用not exists都比not in要快。

select num from a where num in(select num from b)

建议改成: select num from a where exists(select 1 from b where num=a.num)

区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题

14. 理解select Count (*)和Select Count(1)以及Select Count(column)区别

一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的

假如表沒有主键(Primary key), 那么count(1)比count(*)快,

如果有主键的話,那主键作为count的条件时候count(主键)最快

如果你的表只有一个字段的话那count(*)就是最快的

count(*) 跟 count(1) 的结果一样,都包括对NULL的统计,而count(column) 是不包括NULL的统计

mysql数据库优化6_mysql数据库优化相关推荐

  1. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化

    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...

  2. zabbix mysql优化 my.cnf_zabbix数据库优化之数据库优化(二)

    zabbix数据库优化之数据库优化二 简介 数据库history设置是保存7天.然后如果你没有分区.虽然数据在减少但是表空间不会减少.浪费硬盘空间的同事缓存内的cache部分也没有被释放.分区后可以迁 ...

  3. oracle的优化适用于mysql吗_性能优化之数据库优化,适用于Sqlite、Mysql、Oracle、Sql server,详细介绍了索引和事务及部分针对Sqlite的优化...

    本文为性能优化的第一篇--数据库性能优化,原理适用于大部分数据库包括Sqlite.Mysql.Oracle.Sql server,详细介绍了索引(优缺点.分类.场景.规则)和事务,最后介绍了部分单独针 ...

  4. 熟悉mysql数据库设计和性能优化_Mysql数据库性能优化

    Mysql数据库性能优化,可以从下面三点入手: 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式,适度    遵循三大范式就会带来查询时经常需要join,导致查询效率降低 ...

  5. MySQL 数据库性能优化之SQL优化

    2019独角兽企业重金招聘Python工程师标准>>> MySQL 数据库性能优化之SQL优化 发布时间: 2012 年 3 月 21 日  发布者: OurMySQL 来源:简朝阳 ...

  6. mysql update emp set_Mysql数据库性能优化一

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  7. MySQL优化(三):优化数据库对象

    二.优化数据库对象 1.优化表的数据类型 应用设计的时候需要考虑字段的长度留有一定的冗余,但不推荐很多字段都留有大量的冗余,这样既浪费磁盘空间,也在应用操作时浪费物理内存. 在MySQL中,可以使用函 ...

  8. 物联网 mysql数据库优化_MySQL数据库优化大全方法汇总-阿里云开发者社区

    随着数据和负载增加,MySQL数据库会日渐缓慢,性能越来越差,用户体验也随之变差,所以数据库性能优化十分紧迫,云吞铺子分享MySQL数据库优化大全: MySQL数据库优化 云吞铺子先模拟一下数据库访问 ...

  9. mysql怎么加快搜索_优化mysql数据库 提高检索速度

    在优化查询中,数据库应用(如MySQL)即意味着对工具的操作与使用.使用索引.使用EXPLAIN分析查询以及调整MySQL的内部配置可达到优化查询的目的. 任何一位数据库程序员都会有这样的体会:高通信 ...

  10. mysql udb_UDB高可用数据库内核深度优化

    原标题:UDB高可用数据库内核深度优化 UDB是UCloud提供的云数据库,支持实例级别的高可用.UCloud数据库团队在数据库原生复制的多个方面进行了深度优化,提升UDB高可用数据库的功能和性能. ...

最新文章

  1. model.fit以及model.fit_generator区别及用法
  2. iOS应用:成功就像中彩票,大半开发者亏本
  3. eja变送器故障代码al01_EJA系列差压变送器的使用及故障分析
  4. [github]使用——上传工程到新建的repo
  5. SpringBoot从入门到实战只需一篇文章
  6. 关于linux的服务器搭建,关于搭建linux日志服务器
  7. python中cgi到底是什么_什么是CGI?详细介绍Python CGI编程
  8. windows server 2003 r2 64位web服务器安装配置注意事项
  9. vmware nat模式网络不通_笨笨狗教你如何解决VMware虚拟机桥接网络不通问题?
  10. KPI到底是个啥东东,如何设置KPI,我想你需要懂这些
  11. 您收到一封 2019 阿里云峰会 (北京) 邀请函
  12. 【Git】GitHub主页从Dark调回Light的方法
  13. 订票系统java源码_航空订票系统java源码
  14. matlab mallat算法,小波分解与重构1Mallat算法.PDF
  15. 线程池系列三:动态修改线程池队列大小
  16. 我的世界android启动器,我的世界手机版启动器 安卓方块启动器教程
  17. 【头歌C语言程序与设计】字符数组
  18. Android中通过USB接口与和PC进行通讯的demo程序
  19. python中删除list中某指定元素
  20. 企业实施单元测试现状调查(浙江大学管理学院 李云)

热门文章

  1. 使用dva框架的总结
  2. Android酷炫有用的开源框架
  3. 《Entity Framework 6 Recipes》中文翻译系列 (24) ------ 第五章 加载实体和导航属性之查询内存对象...
  4. 手机通过笔记本电脑上网
  5. gcc 的宏替换 __stringify
  6. python输出文件夹路径_python如何获取文件夹下第一层文件的路径,
  7. HDU-3072-IntelligenceSystem(tarjan,贪心)
  8. mooc-IDEA 应用快捷键自动创建测试类--010
  9. sys.dm_db_wait_stats
  10. ubuntu 下mysql 不显示当前的数据库名解决方法