- 浏览: 1149653 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
“MYSQL”查寻性能优化
注 : 1 MYSQL官网的优化方法:http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#order-by-optimization
第一:索引问题
下面列出了目前 MySQL 中与索引使用相关的限制。
(1)MyISAM存储引擎索引键长度的总和不能超过1000字节;
(2)BLOB和TEXT类型的列只能创建前缀索引;
(3)MySQL 目前不支持函数索引;
(4)使用不等于(!= 或者 <>)的时候,MySQL 无法使用索引;
(5)过滤字段使用了函数运算(如abs(column))后,MySQL无法使用索引;
(6)Join 语句中 Join 条件字段类型不一致的时候,MySQL 无法使用索引;
(7)使用LIKE操作的时候如果条件以通配符开始(如’%abc…’)时,MySQL无法使用索引;
(8)使用非等值查询的时候,MySQL 无法使用 Hash 索引。
注:摘至http://www.kaishixue.com/tech/mysql/mysql-index-no/
1 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
5 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有 字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用.
6 在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会 被使用,并且应尽可能的让字段顺序与索引顺序相一致.
第二: Where(IN)问题
1 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
3 .应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20
4.in 和 not in 也要慎用,否则会导致全表扫描(有空值等),如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3
5. 如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:
select id from t where num=@num <mailto:num=@num>
可以改为强制查询使用索引:
select id from t with(index(索引名)) where num=@num <mailto:num=@num>
6.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where num/2=100
应改为:
select id from t where num=100*2
7.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where substring(name,1,3)=’abc’–name以abc开头的id
select id from t where datediff(day,createdate,’2005-11-30′)=0–‘2005-11-30’生成的id
应改为:
select id from t where name like ‘abc%’
select id from t where createdate>=’2005-11-30′ and createdate<’2005-12-1′
8 .不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引
9 关于UNION(有时取代where in)
UNION:
IN、OR子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开。拆开的子句中应该包含索引.
例如 select * from city where id in (2,5);
SELECT * FROM city where id = 2 UNION SELECT * FROM city where id = 5
如果加上关键字ALL(即UNION ALL)
SELECT * FROM city where id = 2 UNION ALL SELECT * FROM city where id = 5
两者差异 :
UNION 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录, 最常见的是过程表与历史表UNION。UNION ALL 只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。从效率上说,UNION ALL 要比UNION快很多。
UNION与ORDER BY
(1 )如果要使用ORDER BY 或者LIMIT子句来对全部 UNION结果进行分类或限定。则应对单个地SELECT语句加圆括号,并把ORDER BY
或LIMIT放到最后一个的后面。
(SELECT * FROM city where id = 2) UNION ALL (SELECT * FROM city where id = 5) ORDER BY id LIMIT 10;
(2 )如果要使用ORDER BY 或者LIMIT子句来对单个 UNION结果进行分类或限定,则应把ORDER BY或LIMIT放到圆括号中。
(SELECT * FROM city where id = 2 ORDER BY id LIMIT 10) UNION ALL (SELECT * FROM city where id = 5 ORDER BY id LIMIT 10) ;
另注:(1) 在UNION中ORDER BY 不能使用包括表名称(即table_name.col_name)列引用格式.
(2) 如果带分类的一列有别名,则orderby 子句必须引用别名,而不能引用列名称。
第三:其他
1 只要能满足你的需求,应尽可能使用更小的数据类型:例如使用MEDIUMINT代替I
2 任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段.
3 在计算行总数时,select count(*) from t 较好。
4 在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert
注:以上信息来致WEB~以及自己的总结。
Query 语句的优化思路和原则
:
1. 优化更需要优化的 Query ;
2. 定位优化对象的性能瓶颈;
3. 明确的优化目标;
4. 从 Explain 入手;
5. 多使用 profile
6. 永远用小结果集驱动大的结果集;
7. 尽可能在索引中完成排序;
8. 只取出自己需要的 Columns ;
9. 仅仅使用最有效的过滤条件;
10. 尽可能避免复杂的 Join 和子查询;
(摘至:《 MySQL性能调优与架构设计 》 )
再次提醒: 优化不是这上面几句话就搞定了的,应视具体情况而定( 尽信书不如无书 ) :-)
发表评论
-
MySQL中GBK与UTF-8的区别
2013-02-11 17:53 1600在MySQL中,如果数据库只需要支持一般中文,数据量很大,性 ... -
MySQL中Utf8_general_ci 和 utf8_unicode_ci的区别
2013-02-11 17:51 1251对中、英文来说没有实质的差别。 utf8_gener ... -
Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,NUM
2012-11-09 11:13 7453SHOW VARIABLES LIKE 'coll%'; ... -
修改MySQL字符编码
2012-11-07 08:24 1007修改编码其实是为了支持中文~ 1. 编译级别。由于缺乏 ... -
INNER LEFT RIGHT JOIN
2012-09-07 10:35 1147CREATE TABLE `a` ( `a1` VARC ... -
MySQL设置字符集为UTF8(Windows版)
2012-08-07 08:40 8922Windows版MySQL设置字符集全部为utf8的方式 ... -
【绿色MySQL设置技巧】
2012-07-07 21:31 12151. mysql 远程连接数据 ... -
查询表Y中数据不存在与表X中的数据使用Left JOIN
2012-06-26 12:39 1102看看我写的对不对,查询接着显示表Y中的数据8,4,p 表X有 ... -
mysql 性能优化方案
2012-04-28 17:18 1024网上有不少mysql 性能优 ... -
设置自动清理mysql binlog日志和手动删除的方法
2012-04-28 17:17 1649MYSQL主从复制(replication)采用 RBR 模式 ... -
自增序列产生器的实现思路
2012-04-28 11:45 936l 需求 u 实现MySQL自带的字段值自动增 ... -
InnoDB引擎表的主键选型
2012-04-28 11:41 1427【导读】 MySQL采用开放可插入式存储引擎架构,提供 ... -
数据库设计范式
2012-04-14 11:05 1013数据库设计三范式 第一范式(1NF):数据库表中的字段都是单一 ... -
11 条重要的数据库设计规则
2012-04-14 11:03 993在你开始阅读这篇文章 ... -
11 步教你选择最稳定的 MySQL 版本
2012-04-01 19:59 1107MySQL开源数据库有多个重要分支,目前拥有的分支分别为:My ... -
连接MySQL数据库生成JavaBean
2012-03-28 08:28 9391做网站时,感觉数据库的设计比较重要,当花了很多时间设计好数据库 ... -
MySQL 分区
2012-03-06 10:31 1208MYSQL 存储过程,定义告 ... -
POWERDESIGNER 教程
2012-02-26 12:03 1481一)概念数据模型 目标 : 本文主要介绍Powe ... -
powerdesigner 使用的十五个问题
2012-02-24 14:22 1327PowerDesigner的主要作用一般还是数据库建模,并生成 ... -
数据库设计原则
2012-02-21 07:41 1031原始单据与实体之间的关系 可以是一对一、一对多、多对多的关 ...
相关推荐
MySQL 查询性能优化 MySQL 查询性能优化是数据库性能优化的重要方面之一。通过优化查询,数据库管理员可以提高数据库的响应速度、减少数据库的负载、提高用户体验。在本节中,我们将讨论 MySQL 查询性能优化的几个...
MySQL 查询性能优化 MySQL 查询性能优化是数据库管理和开发中非常重要的一方面。为了实现高性能,需要从多方面考虑,包括库表结构的设计、索引的建立、查询的设计等。只有合理的设计库表结构和索引,才能确保查询的...
MySQL性能优化是指通过调整MySQL数据库的配置、优化数据库结构和查询语句等方式,提高MySQL数据库的性能和响应速度,以满足应用程序的需求。MySQL作为最流行的开源数据库之一,被广泛应用于各种规模的企业和应用程序...
MySQL 数据库性能优化研究 MySQL 数据库性能优化是当前数据库管理系统中最重要的研究领域之一。随着互联网技术的快速发展,MySQL 数据库被广泛应用于各种业务场景。然而,当数据库规模不断扩大,查询复杂度增加时,...
MySQL性能优化是一个涵盖广泛的主题,涉及多个层面,包括SQL语句优化、索引优化、数据库表结构优化、系统级配置优化以及服务器硬件优化。以下是对这些方面进行详细说明: 1. **SQL语句优化** - **慢查询日志**:...
本书深入浅出地讲解了MySQL性能优化的核心原理,包括索引设计、查询优化、缓存策略、高可用架构等方面的知识。同时,结合案例对这些原理进行了生动形象的阐述,方便读者理解和实践。 实践过程 本书详细描述了优化...
### 高性能MySQL查询性能优化知识点详解 #### 一、查询性能优化的重要性 在数据库管理与维护工作中,查询性能优化是提升系统响应速度、降低服务器负载的重要手段之一。随着业务量的增长,数据库面临的查询压力也...
### MySQL数据库性能优化 #### 一、概览 在当今高度依赖互联网技术的世界里,数据库作为数据存储的核心组件,其性能直接影响着应用系统的响应速度和用户体验。MySQL作为一款广泛使用的开源关系型数据库管理系统,...
总结,MySQL性能优化与架构设计涵盖了许多方面,包括查询优化、索引策略、数据库设计、缓存利用、并行处理、架构设计、数据分布以及监控与调优工具的使用。理解和掌握这些知识点,能够帮助我们构建高效、稳定的...
### MySQL性能优化教程知识点梳理 #### 一、MySQL执行优化 **1.1 背景及目标** - **目标人群**: 已经具备一定的MySQL使用经验的技术人员。 - **适用场景**: 高并发和大数据量的互联网环境。 - **语言风格**: 口语...
### MySQL服务性能优化——my.cnf/my.ini配置详解 #### 背景介绍 本文档旨在详细介绍一套已在生产环境中经过验证、适用于16GB内存环境下的MySQL服务性能优化方案。通过对my.cnf/my.ini配置文件的各项关键参数进行...
两小时解决所有问题--MySQL数据库性能优化
MySQL的SQL查询性能优化技术是数据库管理中至关重要的一环,对于提升系统效率和用户体验有着显著影响。本篇主要探讨了优化SQL查询的一些基本原则、企业级监控、配置与参数化、数据管理和性能考量等方面。 首先,...
"基于MySQL的数据库查询性能优化" 在当前的Web应用开发中,数据库的查询操作已经成为整个应用的性能瓶颈, especialmente 对于使用 MySQL 的 Web 应用。因此,数据库查询性能的优化已经成为一个非常重要的课题。...
MySQL性能优化是数据库管理员和开发人员的关键技能,它涉及到如何有效地使用SQL语句、存储过程和函数,以提高数据查询速度和系统整体效率。本手册将深入探讨这些关键领域,帮助你理解并实施最佳实践。 在SQL语句...
基于 MySQL 数据库的查询性能优化研究 MySQL 数据库是当前网络环境中最流行的开源关系型数据库之一,随着网络环境中数据总量的急剧攀升,对数据库查询的响应时间提出了更严格的要求。为了提高查询效率,需要研究 ...
总之,MySQL性能优化是一个综合性的过程,需要结合理论知识和实践经验,通过对查询优化、索引设计、系统配置等方面的调整,以达到提升系统性能的目标。在高并发环境下,合理的优化策略可以显著提高系统的响应速度和...
### MySQL 5.6 性能优化 #### 一、优化概述 在现代数据库管理中,MySQL作为一种广泛使用的开源关系型数据库管理系统,在诸多业务场景下扮演着重要角色。随着业务需求的增长和技术的发展,如何有效提升MySQL数据库...