关于mysql数据库优化

以我之愚见,数据库的优化在于优化存储和查询速度

目前主要的优化我认为是优化查询速度,查询速度快了,提高了用户的体验

我认为优化主要从两方面进行考虑,

优化数据库对象,

优化sql

优化数据库对象

1.优化表的数据类型,对于每个字段用合适的数据类型,既能解决磁盘的存储空间,又能避免浪费程序运行时物理内存的浪费,提高查询速度。

比如对于不会有负数的整数类型,使用无符号整型,整数范围很小的用tinyint 或者smallint

2 通过拆分表来提高表的访问效率。(对于MyISAM)

垂直拆分,水平拆分,如果一个表中一些列常用,一些列不常用,可以用垂直拆分。缺点查询所有数据的时候需要连表。

3逆规范化

增加冗余列,    冗余列值得是多个表中有相同的列,这样做是避免查询的时候进行连表操作

增加派生列     之增加的列来自其他表的数据,由其他表的数据计算得到。这样是为了减少连接操作,避免使用聚合函数

重新组表   对用户经常查看的数据是使用两张表连起来的数据,可以重新租一张表,也是减少连表的操作

4使用中间表       中间表复制源表的部分数据,并且与源表隔离,在中间表上查询统计操作不会影响源表。

中间表可以灵活增加索引,或增加临时的字段,从而提高统计查询效率

二、sql优化

·  在表的查询中,有这个几种查询类型,

1遍历全表   all

2 扫描全索引 遍历整个索引   index

3 索引范围扫描,常见于<   >  >=  between    range

4使用非唯一索引或者唯一索引的前缀

5  唯一索引,对于每个索引的键值,表中只有一条记录匹配 eq_ref

6 const/system  单表中最多有一个匹配行,查询速度非常快,例如根据主键或者唯一索引

7 null 对于null, mysql不用返回直接能得到结果

索引是数据库优化最常用和最重要的手段之一。

索引的存储分类:

B-tree索引 最常用

HASH索引  只有memory支持

R-Tree索引 空间索引,不常用

Full-text 全文索引

比较常用的是B-Tree索引和hash索引,hash索引适合key-value查询,不适合范围查找

b-tree索引并不是二叉树,而是平衡树

注意对于查询的的列是字符串,要加上引号,不然不会用到索引。

对于 or 分隔开的条件,如果or 前面的列中有索引,而后面的列中没有索引,则不会用到索引。

对于插入操作

尽量使用多个值表的insert语句,这种方式大大减少客户端与数据库的连接,关闭等操作。

避免使用子查询,用效率更高的join,join 效率更高是因为mysq不需要再内存中创建临时表

优化分页

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

  1. 关于MySQL数据库优化的部分整理

    在之前我写过一篇关于这个方面的文章 <[原创]为什么使用数据索引能提高效率?(本文针对mysql进行概述)(更新)> 这次,主要侧重点讲下两种常用存储引擎. 我们一般从两个方面进行MySQ ...

  2. 【MySQL】花10分钟阅读下MySQL数据库优化总结

    1.花10分钟阅读下MySQL数据库优化总结http://www.kuqin.com2.扩展阅读:数据库三范式http://www.cnblogs.com3.my.ini--->C:\Progr ...

  3. 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  4. 50多条mysql数据库优化建议

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存 ...

  5. 解开发者之痛:中国移动MySQL数据库优化最佳实践(转)

    开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则 ...

  6. 30多条mysql数据库优化方法【转】

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  7. 百万行mysql数据库优化和10G大文件上传方案

    百万行mysql数据库优化和10G大文件上传方案 最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个 ...

  8. 从运维角度来分析mysql数据库优化的一些关键点【转】

    概述 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善. 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分 ...

  9. mysql数据库优化 pt-query-digest使用

    mysql数据库优化 pt-query-digest使用 一.pt-query-digest工具简介 pt-query-digest是用于分析 mysql慢查询的一个工具,它可以分析binlog.Ge ...

随机推荐

  1. SCRUM 12.21

    从爬虫遇到的问题中我们学会了: 1.有的网站是有反爬虫机制的,外卖网站(我们猜测基本所有盈利性质的网站可能都是)全部都有. 2.我们对于反爬虫机制有了一定的了解.   本次爬虫测试中,我们最后连美团网 ...

  2. ml-模型评估与选择

    1.基本概念 错误率E=分类错误的样本数a/总样本数m:精度=1-a/m 经验误差/训练误差:在训练集上产生的 泛化误差:在测试集上产生的=====>要把这个泛化误差降到最小化. 2.评估方法 ...

  3. BMC 安装操作系统以及 驱动的处理

    1. 在一个郊区的机房有两台机器需要重装系统. 2. 服务器配置了BMC 还不错... 能够节约很多时间. 3. BMC的配置不算复杂, 就是management 网口插上网线,然后配置一下可以使用的 ...

  4. vCenter简单查看多少虚拟机在开机状态和一共多少虚拟机

    vCenter 界面上面不好找 具体的开机 运行数目 但是数据库里面比较好差 登录vCenter的数据库. 查看表主要是 查看正在开机的虚拟机 select * from dbo.VPX_VM WHE ...

  5. awk、sed、grep三大shell文本处理工具之awk的应用

    awk 1.是什么 是一个编程语言.支持变量.数组.函数.流程控制(if...else/for/while) 单行程序语言. 2.工作流程 读取file.标准输入.管道给的数据,从第一行开始读取,逐行 ...

  6. inf

    下确界 inf,表示下确界,英文名infimum. 对于函数y=f(x),在使f(x)大于等于M成立的所有常数M中,我们把M的最大值max(M)(即函数y=f(x)的最小值)叫做函数y=f(x)的下确 ...

  7. java List 根据属性排序

    Collections.sort(fileItems, new Comparator<FileItem>() { public int compare(FileItem arg0, Fil ...

  8. Socket网络编程--Libev库学习(1)

    这一节是安装篇. Socket网络编程不知不觉已经学了快两个月了.现在是时候找个网络库学学了.搜索了很多关于如何学网络编程的博客和问答.大致都是推荐学一个网络库,至于C++网络库有那么几个,各有各的好 ...

  9. BZOJ4399魔法少女LJJ——线段树合并+并查集

    题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味: ...

  10. String的实例化与static final修饰符

    String两种实例化方式 一种是通过双引号直接赋值的方式,另外一种是使用标准的new调用构造方法完成实例化.如下: String str = "abcd"; String str ...