MySQL的几种优化方法

转载 2015年11月18日 16:13:12

没索引与有索引的区别

优点:
当表中有大量记录时,若要对表进行查询,如果没用建立索引,搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;如果在表中针对一些字段建立了索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。

缺点:
当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

分页优化

MySQL的limit工作原理就是先读取n条记录,然后抛弃前n条,读m条想要的,所以n越大,性能会越差。

一般的分页做法,测试耗时 10.961s

SELECT * FROM v_history_data  LIMIT 5000000, 10

优化后,测试耗时 1.943s

SELECT * FROM v_history_data INNER JOIN (SELECT fid FROM t_history_data LIMIT 5000000, 10) a USING (fid)

优化前的SQL需要更多I/O浪费,因为先读索引,再读数据,然后抛弃无需的行。而优化后的SQL(子查询那条)只读索引(Cover index)就可以了,然后通过member_id读取需要的列。

多使用触发器

表格拆分

大表垂直或者水平拆分。一般是水平拆分

尽可能的使用 NOT NULL

除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL。

Mysql 服务配置优化

MySQL参数的优化:内存中会为MySQL保留部分的缓冲区。这些缓冲区可以提高MySQL的速度。缓冲区的大小都是在MySQL的配置文件中进行设置的。

下面对几个重要的参数进行详细介绍:

key_buffer_size:表示索引缓存的大小。这个值越大,使用索引进行查询的速度就越快

table_cache:表示同时打开的表的个数。这个值越大,能同时打开的表的个数就越多。这个值不是越大越好,因为同时打开的表过多会影响操作系统的性能。

query_cache_size:表示查询缓冲区的大小。使用查询缓存区可以提高查询的速度。这个方式只使用与修改操作少且经常执行相同的查询操作的情况;默认值是0.

Query_cache_type:表示查询缓存区的开启状态。0表示关闭,1表示开启。

Max_connections:表示数据库的最大连接数。这个连接数不是越大越好,因为连接会浪费内存的资源。

Sort_buffer_size:排序缓存区的大小,这个值越大,排序就越快。

Innodb_buffer_pool_size:表示InnoDB类型的表和索引的最大缓存。这个值越大,查询的速度就会越快。这个值太大了就会影响操作系统的性能。

https://www.zybuluo.com/phper/note/85518

mysql优化的常用方法

最近,在使用Mysql的时候,遇到一些查询优化问题,自己查阅资料,并顺带整理了一下。 Mysql的优化,大体可以分为三部分:索引的优化,sql语句的优化,表的优化 1.索引的优化 ...
  • seudongnan
  • seudongnan
  • 2017年02月25日 18:05
  • 1505

MySQL查询优化的几种思路和方法

整理的一些mysql查询存储的优化思路和方法
  • RonghuiMO
  • RonghuiMO
  • 2017年03月08日 20:44
  • 287

MySQL性能优化——易实现的MySQL优化方案汇总

1、索引优化及索引失效情况汇总2、表结构优化小技巧3、临时表的优化4、其它优化技巧...
  • zhangliangzi
  • zhangliangzi
  • 2016年08月26日 16:44
  • 4575

MySQL性能优化方案总结

MySQL进行优化, 效果: SQL和索引 > 数据库表结构 > 系统配置 > 硬件 ;但成本从低到高。...
  • sinat_23080035
  • sinat_23080035
  • 2016年10月13日 00:26
  • 4833

MySQL优化技巧

MySQL优化三大方向① 优化MySQL所在服务器内核(此优化一般由运维人员完成)。② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。③ 对SQL语句以及表优化。M...
  • u013087513
  • u013087513
  • 2017年09月10日 14:14
  • 760

MYSQL千万级数据量的优化方法积累

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

MySQL性能优化的最佳21条经验

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

MySQL百万级数据库优化方案

首先声明是转的,感觉写的很细,原文链接:http://simpleframework.net/blog/v/7881.html 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 ...
  • luyee2010
  • luyee2010
  • 2012年12月17日 22:56
  • 10735

mysql优化

SQL优化
  • qq_19557947
  • qq_19557947
  • 2017年10月18日 16:18
  • 77

一些mysql数据库性能优化方法

一、MySQL 数据库性能优化之SQL优化 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数 ...
  • benpaobagzb
  • benpaobagzb
  • 2015年08月27日 22:42
  • 1657
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL的几种优化方法
举报原因:
原因补充:

(最多只允许输入30个字)