在数据库程序的开发中,性能是最让人关心和担心的问题之一,而影响到其性能的一个关键因素就是查询效率,
往往查询效率的瓶颈都集中在大量耗时的sql语句上。
以下就将列举一些MySQL中行之有效的查询优化手法和准则:
1.只要能满足你的需求,应尽可能使用更小的数据类型:例如使用MEDIUMINT代替INT。
2.尽量把所有的列设置为NOT NULL,如果你要保存NULL,手动去设置它,而不是把它设为默认值。
3.尽量少用VARCHAR、TEXT、BLOB类型。
4.如果你的数据只有你所知的少量的几个,最好使用ENUM类型。
5.任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。
6.使用索引来更快地遍历表。
缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在对各种查询的分析和预测上。一般来说:
a.有大量重复值、且经常有范围查询( > ,< ,> =,< =)和order by、group by发生的列,可考虑建立群集索引;
b.经常同时存取多列,且每列都含有重复值可考虑建立组合索引;
c.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。索引虽有助于提高性能但不是索引越多越好,恰好相反过多的索引会导致系统低效。用户在表中每加进一个索引,维护索引集合就要做相应的更新工作。
注意:
1)IN、OR子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开。拆开的子句中应该包含索引。
这句话怎么理解决,例子如下:
如果在fields1和fields2上同时建立了索引,fields1为主索引
以下sql会用到索引
select * from tablename1 where fields1='value1' and fields2='value2'
以下sql不会用到索引
select * from tablename1 where fields1='value1' or fields2='value2'
2)索引带来查询上的速度的大大提升,但索引也占用了额外的硬盘空间(当然现在一般硬盘空间不成问题),而且往表中插入新记录时索引也要随着更新这也需要一定时间.有些表如果经常insert,而较少select,就不用加索引了.不然每次写入数据都要重新改写索引,花费时间,这个视实际情况而定,通常情况下索引是必需的。
对于多表查询的优化原则是:
尽量将索引建立在:left join on/right join on ... +条件,的条件语句中所涉及的字段上,这样多表查询比单表查询更能体现索引的优势。
7.在海量查询时尽量少用格式转换。
在对查询效率有怀疑的时候,一般是直接用Mysql的Explain来跟踪查询情况.如果用Mysql-Front是通过时长来比较,但是从查询时扫描字段的次数来比较更精确一些.
分享到:
相关推荐
课程大纲: 第1课 数据库与关系代数 综述数据库、关系代数、查询优化...再次回到理论,从理论的高度总结关系代数理论与MySQL查询优化实践的关系。真正认识、掌握MySQL的查询优化技术,大步流星步入查询优化的高手之列。
sql查询优化 提高MySQL数据库查询效率的几个技巧
MySQL数据库执行效率对程序的执行速度有很大的影响,有效的处理优化数据库是非常有用的。尤其是大量数据需要处理的时候
个人经验总结:MySQL数据库优化技巧集锦,阅读个人经验总结:MySQL数据库优化技巧集锦,一、我们可以且应该优化什么? 硬件 操作系统/软件库 SQL服务器(设置和查询) 应用编程接口(API) 应用程序 二、优化硬件 如果你...
在进行高级MySQL笔记时,需要深入了解数据库的内部机制和优化技巧,以提高数据库性能和效率。索引优化:索引是提高数据库查询速度的重要工具。可以通过分析查询语句和表结构,合理地设计和使用索引,避免全表扫描,...
数据库是web网站的性能瓶颈所在,掌握常用的性能优化技巧,可以有效的预防和解决网站卡顿问题。
MySQL查询优化系列讲座之数据类型和效率 这一部分提供了怎么选择数据类型来帮助提高查询运行速度的一些指导 你下了之后你才认为这10分花的是值的。。。。。。
内容包括从基本的数据库设计理论到高效的查询优化技巧,涵盖了索引使用、存储过程、触发器以及数据安全等关键主题。此外,资源中还包括作者在学习过程中编写的笔记以及实际优化项目的案例分析,旨在为读者提供从理论...
26. 如何知晓MYSQL解决一条查询 11 27. MYSQL非常不错 12 28. MYSQL应避免的事情 12 29. MYSQL各种锁定 12 30. 给MYSQL更多信息以更好地解决问题的技巧 12 31. 事务的例子 13 32. 使用REPLACE的例子 13 33. 一般技巧...
1.优化你的MySQL查询缓存 在MySQL服务器上进行查询,可以启用高速查询缓存。让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一。当同一个查询被执行多次时,如果结果是从缓存中提取,那是相当快的。 但主要的...
MySQl索引优化课件,详细得介绍了MySQl索引优化数据库
提高MySQL 查询效率的三个技巧小结MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我在开发一个P2P应用的时候曾经使用MySQL来保存P2P节点,由于P2P的应用中,结点数动辄上万个,而且节点变化...
豆瓣8.4分,数据库索引设计必读的好书。 高清扫描版,带完整章节书签(不是网上常见的页码书签的版本!!!!)
● 本书中的更新还表现为使用MySQL Workbench作为MySQL 5.1的唯一数据库开发工具。本书第4版使用的MySQL GUI工具被MySQL在2009年12月18日宣布停止使用。目前的MySQL Workbench 5.2.x集成了MySQL GUI工具的功能,这一...
提升MYSQL查询效率的10个SQL语句优化技巧
这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用。 这是 MySQL数据库性能优化专题 系列的第二篇文章:MySQL 数据库性能优化之表结构优化 系列的第一篇文章:MySQL 数据库性能优化...
在本篇文章中,我们介绍了一些MySQL进阶技巧,包括索引优化、查询优化和数据库配置调整。
2.3两个常用的优化技巧 2.4常用SQL优化 2.5常用SQL技巧 3.优化数据库对象 3.1优化表的数据类型逆规范化 3.2提高查询速度 4.锁问题 4.1MyISQM表锁 4.2InnoDB锁问题 5.优化MySQL Server 5.1MySQL体系结构...
因此,本文将介绍对MySQL进行性能优化的技巧和窍门。1.存储引擎的选择如果数据表需要事务处理,应该考虑使用InnoDB,因为它完全符合ACID特性。如果不需要事务处理,使用默认存储引擎MyISAM是比较明智的。并且不要...