关于mysql数据库优化
关于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数据库优化的更多相关文章
- 关于MySQL数据库优化的部分整理
在之前我写过一篇关于这个方面的文章 <[原创]为什么使用数据索引能提高效率?(本文针对mysql进行概述)(更新)> 这次,主要侧重点讲下两种常用存储引擎. 我们一般从两个方面进行MySQ ...
- 【MySQL】花10分钟阅读下MySQL数据库优化总结
1.花10分钟阅读下MySQL数据库优化总结http://www.kuqin.com2.扩展阅读:数据库三范式http://www.cnblogs.com3.my.ini--->C:\Progr ...
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 50多条mysql数据库优化建议
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存 ...
- 解开发者之痛:中国移动MySQL数据库优化最佳实践(转)
开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则 ...
- 30多条mysql数据库优化方法【转】
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 百万行mysql数据库优化和10G大文件上传方案
百万行mysql数据库优化和10G大文件上传方案 最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个 ...
- 从运维角度来分析mysql数据库优化的一些关键点【转】
概述 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善. 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分 ...
- mysql数据库优化 pt-query-digest使用
mysql数据库优化 pt-query-digest使用 一.pt-query-digest工具简介 pt-query-digest是用于分析 mysql慢查询的一个工具,它可以分析binlog.Ge ...
随机推荐
- 开源RabbitMQ操作组件
开源RabbitMQ操作组件 对于目前大多的.NET项目,其实使用的技术栈都是差不多,估计现在很少用控件开发项目的了,毕竟一大堆问题.对.NET的项目,目前比较适合的架构ASP.NET MVC,ASP ...
- [BUAA_SE_2017]个人项目-Sudoku
个人项目作业-数独 Github项目地址 时间预估 PSP2.1 Personal Software Process Stages 预估时间(分钟) 实际耗时(分钟) Planning 计划 60 · ...
- HTML DOM 学习笔记
一.HTML DOM定义了所有HTML元素的对象和属性,以及访问他们的方法即:HTML DOM是关于如何获取,修改,添加,删除HTML元素的标准二.DOM节点1.分类整个文档是一个文档节点每个HTML ...
- python3_列表、元组、集合、字典
列表list #列表的基本操作 >>> a=[] #创建空列表 >>> a = [0,1,2,3,4,5] #创建列表并初始化,列表是[]包含由逗号分隔的多个元素组 ...
- linux bin & sbin different
linux bin & sbin different flutter & $PATH http://blog.taylormcgann.com/2014/04/11/differenc ...
- ava 8中的新功能特性
正如我之前所写的,Java 8中的新功能特性改变了游戏规则.对Java开发者来说这是一个全新的世界,并且是时候去适应它了. 在这篇文章里,我们将会去了解传统循环的一些替代方案.在Java 8的新功能特 ...
- Lodop客户端本地角色注册号常见误区
之前写过一篇关于Lodop和c-lodop注册号的区别:LODOP.C-LODOP注册号的区别第一种角色客户端本地打印角色是最常见的角色,最常见的场景,关于c-lodop云打印,它的第一种角色是取代L ...
- python中字典和json的区别
python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转 定义 python中,json和dict非常类似,都是k ...
- POJ3122-Pie-二分答案
有N个派,F+1个人,每个人分到的体积要相等,而且每个人只能有一块派. 二分答案,对于一个mid,对每个派进行检测,尽量的多分,然后如果份数比F+1大,说明mid可以更大,就把mid给low.注意份数 ...
- day24 新三级菜单
china = { "shandong":{ "linyi":["lanshan","nanfang","he ...