对查询
select distinct product0_.id as id62_........................................................
from
t_product product0_, t_product_catagory productcat1_
where
product0_.catagory_id=productcat1_.id
and product0_.site_id='54586546898098098'
and product0_.state=1 and productcat1_.publish=1
order by product0_.modifyTime desc limit 0, 30;
的优化
1.优化order by,order by 使用index的几种情况,其中key_part1,key_part2表示联合索引中的某索引字段
SELECT * FROM t1
ORDER BY key_part1,key_part2,... ;
SELECT * FROM t1
WHERE key_part1=constant
ORDER BY key_part2;
SELECT * FROM t1
ORDER BY key_part1 DESC, key_part2 DESC;
SELECT * FROM t1
WHERE key_part1=1
ORDER BY key_part1 DESC, key_part2 DESC;
具体见:
http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html
所以优化产品查询的排序只要做这样的改变就可以了alter table t_product add index t_product_site_modifytime_idx (site_id,modifytime),
如果order by 没有利用到索引,那么将会出现fileSort,如果sort_buffer不够大,fileSort过程则需要使用临时文件,fileSort优化,主要通过调整环境来达到,如下
2.设置参数,优化order by 时可能出现的file sort:
将sort_buffer_size = 1M read_rnd_buffer_size = 1M
修改为sort_buffer_size = 16M read_rnd_buffer_size = 16M
避免order by 过程 进行fileSort排序过程临时文件的产生。从3秒->0.7秒左右
3.去掉distinct,因为distinct加order by,mysql将自动使用临时表
distinct的优化方式详见:[url]http://dev.mysql.com/doc/refman/5.0/en/distinct-optimization.html [/url]
4.修改jdbc的url,增加参数useServerPrepStmts=false,使得query cache生效,
这个参数就是让参数与sql连接成整一个字符串,调试对参数中的单引号做了转义,应该
不用担心sql注入攻击了。另外,是否会导致服务端对查询重复的编译而导致的性能下降就不 清楚了.
整个测试去掉了querycache,保证innodb_buffer的命中率的情况下进行.
结果,在limit很小的时候,原来需要7秒,现在需要0.0秒。但在limit 1000或者更大的时候,查询速度下降,
因为需要得到开始索引那么多条记录,这只能通过限制limit的开始值和期望query cache命中率高些.
最重要工具是下面链接的explain教程
http://dev.mysql.com/doc/refman/5.1/en/using-explain.html
分享到:
- 2008-05-15 21:59
- 浏览 2944
- 评论(3)
- 论坛回复 / 浏览 (2 / 3167)
- 查看更多
相关推荐
第3课 查询优化技术理论与MySQL实践(一)------子查询的优化(一) 第4课 查询优化技术理论与MySQL实践(二)------子查询的优化(二) 从理论看,子查询包括的内容和范围,建立清晰的概念 从实践看,MySQL的子查询...
基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf基于MySQL的数据库查询性能优化.pdf...
sql查询优化 提高MySQL数据库查询效率的几个技巧
从Mysql-EXPLAIN探寻数据库查询优化
mysql_海量数据库的查询优化及分页算法方案.doc
MySQL数据库优化MySQL数据库优化MySQL数据库优化MySQL数据库优化
简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习mysql的读者。 简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习...
基于MySQL数据库的查询性能优化研究.pdf
mysql MySQL数据库开发优化与管理维护mysql MySQL数据库开发优化与管理维护mysql MySQL数据库开发优化与管理维护mysql MySQL数据库开发优化与管理维护mysql MySQL数据库开发优化与管理维护mysql MySQL数据库开发优化...
MySQL数据库设计、优化 叶金荣 微博: @yejinrong 微信公众号: MySQL中文网 QQ群: 125572178、272675472 2013.08.20 MySQL数据库设计、优化全文共24页,当前为第1页。 提纲 规范 基础规范 命名规范 库表规范 字段...
MySQL数据库查询优化技术 (完结) MySQL的查询优化技术-01-15
摘要: 本文首先阐述了索引在数据库查询优化中的重要作用,然后详细介绍了在MySQL中...作为数据库管理员,合理优化和使用索引是提升MySQL数据库查询性能的重要手段。 关键词:MySQL,数据库,查询优化,索引,执行计划,解析器
两小时解决所有问题--MySQL数据库性能优化
基于Mysql数据库的SQL优化 亲测
MySQL数据库优化SQL篇.ppt,适用于企业级项目开发
MySQL介绍、架构、什么优化、查询优化、索引使用、存储优化、数据库结构优化、硬件优化、MySQL缓存、MySQL服务器参数
MySQL数据库查询优化方案.docx
深入浅出MySQL数据库开发、优化与管理维护.doc