对查询
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
- 浏览 2991
- 评论(3)
- 论坛回复 / 浏览 (2 / 3247)
- 查看更多
相关推荐
第3课 查询优化技术理论与MySQL实践(一)------子查询的优化(一) 第4课 查询优化技术理论与MySQL实践(二)------子查询的优化(二) 从理论看,子查询包括的内容和范围,建立清晰的概念 从实践看,MySQL的子查询...
在 MySQL 数据库中,查询优化是一个非常重要的方面。在实际应用中,高效的查询可以提高整个系统的性能和响应速度。下面我们将介绍几个提高 MySQL 数据库查询效率的技巧。 使用 Statement 进行绑定查询 使用 ...
因此,数据库查询性能的优化已经成为一个非常重要的课题。本文将从 MySQL 数据库查询性能优化的角度,讨论如何通过合理的库表设计结构和数据库操作来提高数据库的响应速度,进而提高应用的用户体验度。 数据库查询...
在 MySQL 中,有一个“查询分析优化器”,它可以计算出 where 子句中的搜索条件并确定哪个索引能缩小表扫描的搜索空间。 1. SARG 的定义 SARG(Search ARGument)是指用于限制搜索的一个操作,例如 Name=’张三’ ...
MySQL 数据库查询优化方案 MySQL 数据库查询优化是指对数据库中的查询语句进行优化,以提高查询效率和数据库性能。以下是 MySQL 数据库查询优化的一些重要知识点: 一、索引相关 索引是 MySQL 数据库查询优化的...
基于 MySQL 数据库的查询性能优化研究 MySQL 数据库是当前网络环境中最流行的开源关系型...提高 MySQL 数据库的查询性能需要从多方面入手,包括硬件配置、索引设计、查询语句优化、数据库连接池等多个方面的优化。
MySQL数据库优化MySQL数据库优化MySQL数据库优化MySQL数据库优化
### MySQL数据库性能优化 #### 一、概览 在当今高度依赖互联网技术的世界里,数据库作为数据存储的核心组件,其性能直接影响着应用系统的响应速度和用户体验。MySQL作为一款广泛使用的开源关系型数据库管理系统,...
在本篇中,我们将学习 MySQL 数据库优化的知识点,包括查询优化、索引优化、存储优化和服务器优化等。 管理维护篇 在本篇中,我们将学习 MySQL 数据库管理维护的知识点,包括数据库备份、数据库恢复、服务器监控和...
MySQL 数据库优化是数据库管理和开发者非常关心的一个问题。由于 MySQL 数据库的性能优化可以直接影响到整个应用系统的性能和用户体验,因此掌握 MySQL 数据库优化技巧对开发者和数据库管理员来说非常重要。本文总结...
MySQL 数据库性能优化是一个持续不断的过程。通过调整硬件配置、优化数据库设计和查询语句,可以显著提升 MySQL 数据库的性能和响应速度。然而,每个业务场景都有其特殊性,需要根据实际情况进行分析和优化。在实施...
MySql数据库性能优化是指通过调整和优化数据库的各种参数、结构和查询语句,提高数据库的运行速度和效率,减少资源占用和系统瓶颈。下面将详细介绍MySql数据库性能优化的相关知识点。 什么是优化? 优化是指通过...
简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习mysql的读者。 简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习...
MySQL数据库性能优化是一个涵盖多个方面的主题,涉及到数据库配置、索引优化、查询优化、存储引擎选择、内存管理以及数据模型设计等多个环节。以下是对这些关键领域的详细解释: 1. **数据库配置**: - `my.cnf` ...
对于MySQL数据库来说,性能优化可以从多个层面来进行,包括但不限于硬件层面、系统参数配置、数据库结构设计、查询语句优化以及索引优化等。 一、硬件层面 在硬件层面,我们可以通过增加内存、使用更快的硬盘(如...
MySQL数据库优化SQL篇PPT课件.pptx 本PPT课件主要讲述了MySQL数据库优化的重要知识点,特别是SQL优化方面的内容。从执行计划、SELECT语句、IN和EXIST语句、LIMIT语句、RAND函数、Order by、Group by、Distinct和...
MySQL 5.1是MySQL数据库管理系统的一个重要版本,它在2005年发布,以其稳定性和高效性受到广泛欢迎。MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典的MySQL AB公司开发,后来被Sun Microsystems收购,最终...