MySQL的几种优化方法
来源:互联网 发布:淘宝附近的人在哪查看 编辑:程序博客网 时间:2024/06/05 16:54
没索引与有索引的区别
优点:
当表中有大量记录时,若要对表进行查询,如果没用建立索引,搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘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的优化方法
- 从编译到工具:几种mysql的优化方法
- 优化MySQL性能的几种方法-总结
- MySQL查询优化的几种思路和方法
- MySQL 数据库优化的几种方式
- mysql常见的几种优化
- 优化图片内存的几种方法
- 几种常用的优化方法
- 布局优化的几种方法
- 关于Unity的几种优化方法
- 常见的几种优化方法
- sql优化的几种方法
- Sql优化的几种方法
- sql优化的几种方法
- 【转】几种常用的优化方法
- 优化快速排序的几种方法
- 黑马程序员——Java继承——多线程(二)
- adb出错 adb not responding 解决方法
- 【GZOJ】1372——阶乘
- 将文件内容隐藏在bmp位图中
- 一个简单的对话框JDialog
- MySQL的几种优化方法
- java中如何防止类被初始化(实例化)?
- 简化的以,号分隔为SQLtable
- rapidjson使用总结
- html网页框架
- 统计学习方法 --- 感知机模型原理及c++实现
- 背包问题九讲
- JQuery按照form下载文件+后台asp.net,非ajax(下)
- Ubuntu下Matlab 2014 快捷键修改