`
like.eagle
  • 浏览: 254426 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库查询优化技巧(MySQL)

 
阅读更多

在数据库程序的开发中,性能是最让人关心和担心的问题之一,而影响到其性能的一个关键因素就是查询效率,

往往查询效率的瓶颈都集中在大量耗时的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 楼 wls212 2013-02-03  

相关推荐

    MySQL数据库查询优化

    课程大纲: 第1课 数据库与关系代数 综述数据库、关系代数、查询优化...再次回到理论,从理论的高度总结关系代数理论与MySQL查询优化实践的关系。真正认识、掌握MySQL的查询优化技术,大步流星步入查询优化的高手之列。

    MySQL数据库查询优化技巧

    MySQL数据库查询优化技巧是提升应用程序性能的关键因素,尤其是在处理大量数据时。以下是一些关键的优化策略: 1. **创建索引**:在频繁用于WHERE和ORDER BY子句的列上建立索引,能显著加快查询速度。索引使得...

    mysql数据库性能优化

    #### 五、其他优化技巧 ##### 1. 使用慢查询日志 - **定义**:慢查询日志记录了执行时间超过阈值的查询。 - **作用**:通过分析慢查询日志,可以找到性能瓶颈并进行优化。 ##### 2. 查询缓存 - **概念**:MySQL...

    mysql数据库优化的学习心得

    本文总结了一些 MySQL 数据库优化技巧,包括选择合适的字段属性、使用连接(JOIN)代替子查询、使用联合(UNION)代替手动创建的临时表、事务、锁定表、外键等。 一、选择合适的字段属性 在创建 MySQL 数据库时,...

    深入浅出MySQL数据库开发、优化与管理维护.doc

    在本篇中,我们将学习 MySQL 数据库优化的知识点,包括查询优化、索引优化、存储优化和服务器优化等。 管理维护篇 在本篇中,我们将学习 MySQL 数据库管理维护的知识点,包括数据库备份、数据库恢复、服务器监控和...

    Mysql数据库性能优化

    7. **其他优化技巧**: - 定期分析和优化表(`ANALYZE TABLE` 和 `OPTIMIZE TABLE`),更新统计信息以帮助优化器做出更好的决策。 - 使用慢查询日志追踪并优化慢查询。 - 对于高并发场景,考虑使用分区表来分散...

    MySQL数据库优化SQL篇PPT课件.pptx

    MySQL数据库优化SQL篇PPT课件.pptx ...本PPT课件对MySQL数据库优化的重要知识点进行了详细的讲解,并提供了许多实用的优化技巧和方法。通过学习本PPT课件,可以提高数据库的性能和效率,提高开发效率和质量。

    MySQL数据库考试练习题 mysql试题集 共28页.pdf

    2. **性能优化**:学习如何通过索引优化、查询优化等手段提升数据库的运行效率。 3. **安全性设置**:了解用户权限管理、加密技术等措施,保障数据库的安全。 ### 四、事务处理 1. **事务的基本概念**:理解事务的...

    mysql数据库query的优化

    在实际应用中,不恰当的SQL查询可能导致数据库性能急剧下降,因此了解并掌握查询优化技巧至关重要。 首先,理解索引是优化查询的基础。索引就像书籍的目录,能帮助数据库快速定位数据。在MySQL中,B-Tree、Hash、R-...

    易语言MYSQL数据库分页查询

    在IT领域,数据库操作是至关重要的,特别是在处理大量数据时,分页查询是提高系统性能、优化用户体验的有效手段。...理解这些步骤,并结合数据库优化技巧,可以帮助开发者构建出高效、友好的数据展示系统。

    MySQL数据库设计与优化实战:提升查询性能与系统稳定性

    内容概要:本文详细介绍了 MySQL 数据库设计与优化的最佳实践,包括数据库设计的基础原则、索引设计、数据库分区与分库分表、查询优化技巧以及性能调优与监控。通过合理的设计和优化,可以帮助开发者提升 MySQL ...

    数据库性能优化方案

    在SQL Server、MySQL和Oracle这三大主流数据库系统中,优化策略各有其特点和技巧。以下将针对这些数据库的性能优化进行深入探讨。 1. **SQL Server性能优化** - **索引优化**:合理创建和使用索引可以显著提升查询...

    【整理】数据库面试题索引sql优化+数据库SQL优化总结之百万级数据库优化

    5. **SQL优化技巧**:这可能涉及重写SQL语句以减少资源消耗,比如使用连接操作而非子查询,或者避免在索引字段上使用否定条件。 6. **存储优化**:讨论表分区、分片、归档等策略,以提高读写效率和存储空间的管理。...

    深入浅出-MySQL数据库开发、优化与管理维护

    三、MySQL数据库优化 优化是提高数据库性能的关键,涉及查询优化、索引优化、服务器配置等多个方面。 1. 查询优化:通过改进SQL语句,避免全表扫描,使用JOIN优化,减少子查询,以及合理使用索引来提高查询效率。 ...

    MySQL数据库原理及应用(第2版)(微课版)-教学用数据库(Mysql数据库备份文件).zip

    在《MySQL数据库原理及应用(第2版)(微课版)》中,我们通常会深入探讨数据库的基本概念、设计原则以及实际操作技巧。这份教学资料包含了一个Mysql数据库的备份文件,为学习者提供了实践平台,便于理解和掌握...

    提升MYSQL查询效率的10个SQL语句优化技巧.doc

    "MYSQL 查询效率优化技巧" 在数据库应用中,MySQL 查询效率对程序的执行速度有很大的影响。有效的处理优化数据库是非常有用的,尤其是大量数据需要处理的时候。以下是十个 SQL 语句优化技巧来提升 MYSQL 查询效率:...

    MySQL数据库技术优化概述.docx

    除了上述基础优化措施,还有一些高级优化技巧,如分区表、物化视图、并行查询、预编译SQL语句等。分区表能够将大表划分为多个独立的部分,分别处理,从而提高查询效率。物化视图可以预先计算好复杂查询的结果,提供...

    MYSQL数据库优化.pdf

    ### MySQL数据库优化知识点 #### 一、索引优化表 **1.1 索引的概念及作用** 索引是数据库中的一个重要组成部分,用于提高数据检索的速度。索引类似于图书的目录,通过索引可以快速定位到所需的数据,而不是逐行...

Global site tag (gtag.js) - Google Analytics