MySQL数据库的优化:
   数据库优化的目的:
          1、避免出现页面访问错误(
                          由于数据库连接timeout产生的5XX错误
                          由于慢查询造成页面无法加载
                          由于阻塞造成数据无法提交)
          2、 增加数据库的稳定性(很多数据库问题都是由于低低效查询引起的)
          3、优化用户体验(流畅页面的访问速度 , 良好的网站功能体)
   可以从以下几个方面进行优化:SQL及索引,数据表结构,系统配置,硬件。其中SQL及索引最重要,首先我们要根据我们的需求写出结构良好的SQL,另外要根据SQL在表中建立有效的索引,但是如果我们的索引过多,不但会影响我们写入的效率,同时还会影响我们查询的效率,所以索引建立要适量有效。但是如果表结构设计不合理,我们就很难写出结构良好的SQL,所以要建立简洁明了的表结构,所以说在设计表结构的时候,我们要考虑怎样对表结构进行查询,怎样的表结构的设计才是有利于表结构的查询,然后是系统配置的优化,但是当前我们大多数的MySQL都是在lnuix系统上,但是系统上是有一些本身的限制,比如说:TCP/IP连接数的限制,打开文件数的限制和一些安全上的限制,因为MySQL查询是基于文件的,没查询一个表就要打开一个文件,如果文件数达到一定的限制,这个文件就无法打开。硬件优化,就是我们要选择更适合数据库的CPU,更快的IO,以及更多的内存,数据库数据要放在内存中查询修改,所以内存越大,对我们数据库的性能就越好,但CPU却不是这样的,CPU越大,不见得对数据库性能越好,因为SQL会对CPU的可数有限制,比如说他并不会用到太多的核数,有的查询他只用于单核,所以说CUP也对数据库有影响,并不是核数越多越好,而IO,目前由于多新型IO设备,如 ssd,,但它并不能减少数据库锁的机制,因为锁是数据库保存完整性的一种机制,虽然IO很快,但它并不能减少阻塞,所以我们说硬件上的优化是成本最高但效果最差的,所以说如果慢查询很多,阻塞很多,那么并发量就会上去,导致应用响应缓慢。
 
1.SQL及索引的优化
    对Max(),Count()函数的优化,子查询的优化,group by 的优化(目的是减少IO),limit优化(使用有索引的列或主键进行orderby操作以避免IO)
 
     a. 如何选择合适的列建立索引: 在where从句,group by, order by,on从句中出现的列建立索引;索引字段越小越好;离散度大的列放到联合索引的前面。
     b.索引的维护及优化------重复及冗余索引和对不用索引的删除
 2.数据库结构的优化
    a.选择合适的数据类型,数据类型的选择,重点在于合适。 
     b.表的范式化和反范式化(范式化指的是表设计的规则) 
         反范式化是指为了查询效率的考虑把原本符合第三范式的表适当的增加冗余,已达到优化效率的目的,反范式化是以空间换时间的做法。
     c.表的垂直拆分,解决了表的宽度问题。将不常用的字段拆分出来。
     d.表的水平拆分,解决表的数据量过大的问题。
3.系统配置的优化。及MySQL配置文件的优化   
 
根据SQL语句中以下关键词建立索引:
 
查找:select
       
别名:AS
    select id AS userId,username AS uname From users;
查询结果分组:group by
   select sex from users group by sex;
  分组条件:HAVING +聚合函数、或者是having后的字段出现在select后面
    select age,sex from users group by sex HAVING age>2;
  对分组结果进行排序:order by    DESC 表示降序 默认为ASC升序
      select * from users order by id DESC; 
限制查询结果返回的数量:limit
    select * from users LIMIT 2;/LIMIT 2,2 (指的是从第三条开始,限制2条)
插入insert:
    insert test(username) select username from users where age>27;
更新:update
子查询:(not)in,(not)exists
向单表插入:insert table_user1(username) select age from table_user2 group by age;
连接类型:inner join,内连接
              在MySQL中,join,cross join 和 inner join 是等价的。
       left [outer] join,左外连接
       right [outer] join,右外连接
   select username,age,sex 
   inner join  user2;
函数:
select CONCAT(username,age) AS u FROM user;//字符串链接
聚合函数:Avg(),Count(),Max(),Min(),Sum()
加密函数:MD5(),Password()

mysql数据库索引优化的更多相关文章

  1. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  2. mysql数据库索引优化与实践(一)

    前言 mysql数据库是现在应用最广泛的数据库系统.与数据库打交道是每个Java程序员日常工作之一,索引优化是必备的技能之一. 为什么要了解索引 真实案例 案例一:大学有段时间学习爬虫,爬取了知乎30 ...

  3. MySql数据库索引优化注意事项

    设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率.设计MySql索引的时候有一下几点注意: 1,创建索引 对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为 ...

  4. Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化

    需要的联系我,QQ:1844912514

  5. mysql数据库性能优化(包括SQL,表结构,索引,缓存)

    优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当 ...

  6. MySQL 数据库性能优化之索引优化

    接着上一篇 MySQL 数据库性能优化之表结构,这是 MySQL数据库性能优化专题 系列的第三篇文章:MySQL 数据库性能优化之索引优化 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引 ...

  7. MySQL数据库性能优化:表、索引、SQL等

    一.MySQL 数据库性能优化之SQL优化 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数IO永远是数据库最容易瓶颈的地 ...

  8. MYSQL数据库的优化

    我们究竟应该如何对MySQL数据库进行优化?下面我就从MySQL对硬件的选择.MySQL的安装.my.cnf的优化.MySQL如何进行架构设计及数据切分等方面来说明这个问题. 服务器物理硬件的优化 在 ...

  9. MySQL数据库的优化(上)单机MySQL数据库的优化

    MySQL数据库的优化(上)单机MySQL数据库的优化 2011-03-08 08:49 抚琴煮酒 51CTO 字号:T | T 公司网站访问量越来越大,导致MySQL的压力越来越大,让我们自然想到的 ...

随机推荐

  1. 多元线性回归算法python实现(非常经典)

    对于多元线性回归算法,它对于数据集具有较好的可解释性,我们可以对比不过特征参数的输出系数的大小来判断它对数据的影响权重,进而对其中隐含的参数进行扩展和收集,提高整体训练数据的准确性.整体实现代码如下所 ...

  2. NULL判斷符

    Null 传导运算符 编程实务中,如果读取对象内部的某个属性,往往需要判断一下该对象是否存在.比如,要读取message.body.user.firstName,安全的写法是写成下面这样. const ...

  3. 白手起家Django项目发布中篇_Centos下Python2和3并存环境部署

    python环境部署 我们今天学习的内容是如何将Django项目部署到linux服务器上,我们部署的linux系统是centos7首先,我们先在linux上搭建我们的Python3环境: 在这里首先强 ...

  4. java 寒假作业

    寒假作业 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ (如果显示不出来,可以参见[图1.jpg]) 每个方 ...

  5. 用Python实现简单的服务器【新手必学】

    如何实现服务器... socket接口是实际上是操作系统提供的系统调用.socket的使用并不局限于Python语言,你可以用C或者JAVA来写出同样的socket服务器,而所有语言使用socket的 ...

  6. HTML 5 <blockquote><p>的分工与合作

    一提到文档标签,大家首先想到的就是p,那如果要实现缩进及间距,还得使用margin,padding及text-indent等css样式. 但现在html5的一个新标签解决了以上所有问题,它可以自缩进和 ...

  7. Webstorm常用快捷键备忘

    WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscript IDE ...

  8. Delphi另一个多线程函数:BeginThread用法

    Delphi另一个多线程函数:BeginThread━━━━━━━━━━━━━━━━━━━━━━━━━━ Delphi也提供了一个相同功能的类似函数:function BeginThread(    ...

  9. linux后台运行jar

    1. 在linux服务器上运行Jar文件时通常的方法是: $ java -jar test.jar 这种方式当ssh窗口关闭时,程序中止运行,或者是运行时没法切出去执行其他任务 2. 保持程序后台运行 ...

  10. Spark on Yarn | Spark,从入门到精通

    ?/ 为什么需要 Yarn? /? Yarn?的全称是?Yet Anther Resource Negotiator(另一种资源协商者).它作为 Hadoop?的一个组件,官方对它的定义是一个工作调度 ...