`

MySQL之SQL优化(一)

 
阅读更多

 

1. 创建索引,myslq支持重复索引,但是多余的索引会带来性能开销;

a) 利用索引可以减少查询读取的行数

b) 提高表连接操作的性能

c) 如果where子句中条件以通配符开头,则mysql不使用索引

d) mysql不支持基于索引的函数

e) 创建索引非常耗时,同时会阻塞其他操作,所以尽量将创建多个索引的语句合并到同一条alter语句中

f)  多列索引最左边的列可以被当作单列索引来使用

 

2.Mysql索引优化器特性 

a) 两个索引取并集,当对两个很高基数的索引执行OR操作时

b) 两个索引取交集,当对两个有少量唯一值的索引执行AND操作时

c) 两个索引先排序,再取并集,例如:

EXPLAIN SELECT artist_id, name

FROM artist

WHERE name = 'Queen'

OR (founded BETWEEN 1942 AND 1950)

 

3. USE INDEX关键字提示优化器使用特定的索引:

USE INDEX (index_column)

 

4. IGNORE INDEX关键字提示优化器忽略特定缩影:

IGNORE INDEX (index_column)

IGNORE INDEX (index_column_1, index_column_2)

 

5. 添加索引可提高sql语句的性能,可能造成其他开销,

a)对DML的影响,在表上添加索引会影响写操作的性能

a.1)重复索引,索引优化最简单的就是删除重复索引,任何包含在其他索引最左边部分的索引都属于

重复索引,同时该索引不会被使用

使用Maatkit工具集的mk-duplicate-key-checker可检查重复索

mk-duplicate-key-checker命令的使用:

mk-duplicate-key-checker --databases=databasename --user=root --password=passwd

a.2) 索引的使用

索引的存在会影响写操作的性能,并且会占用磁盘空间从而影响到备份和恢复策略

 

b) 对DDL的影响

随着表的不断增长,对性能的影响也不断加大。

在InnoDB中使用默认表空间时配置,执行DDL语句时,mysql会创建一份表的副本,在执行alter期间该额外的磁盘空间会被添加到公共表空间中,并且该磁盘空间在命令执行完成后不会被文件系统回收,而是当InnoDB需要额外磁盘空间时在内部被重复利用。

InnoDB中,主键要尽量选择字长小的数据类型

b.1) 页面填充因子

尽量选择与业务无意义的属性做主键

b.2) 非主键索引

InnoDB的非主键索引使用了主键的值,而不是指向主键的指针;在每个索引记录后都附加一个主键的副本。因此使用更短的主键可以很大程度上减少索引占用的空间。InnoDB这种使用主键值的方式与InnoDB内部的主键散列算法结合使用能改善性能。

 

6. MySQL的限制和不足

a) 基于开销的优化器

a.1)MySQL使用基于开销的优化器来调整可能的查询书以创建最优的SQL执行路径,MySQL通过生成的统计信息来辅助优化器的能力很有限,只支持数量有限的索引提示用于帮助优化器选择一个合适的路径。

b) 制定QEP(Query Execution Plan)

MySQL不支持为给定查询指定QEP

c) 索引的统计信息

MySQL支持有限的索引统计信息,并且因存储引擎而已

d) 基于函数的索引

MySQL不支持基于函数的索引,在已有的索引中使用函数会导致性能下降

e) 一个表上的多个索引

默认情况MySQL会对一个表只使用一个索引

分享到:
评论

相关推荐

    mysql数据库sql优化

    ### MySQL数据库SQL优化 #### 一、SQL优化 在MySQL数据库管理中,SQL查询的性能直接影响到系统的响应时间和资源消耗。通过合理的SQL优化,可以显著提高数据处理速度,降低服务器负载,提升用户体验。 ##### 1.1 ...

    Effective MySQL之SQL语句最优化.pdf

    尽管如此,我将基于标题和描述中提供的关键词“Effective MySQL之SQL语句最优化”来构建知识点。 1. SQL语句最优化的概念:在数据库管理中,对SQL语句进行优化是提高数据库性能的关键环节。最优化的SQL语句能够在...

    mysql的sql优化

    MySQL的SQL优化是数据库管理中的重要环节,尤其对于有经验的开发者来说,了解并掌握这一技能可以显著提升数据库性能,减少资源消耗。SQL优化主要涉及查询效率、索引使用、查询语句结构优化等多个方面。 首先,理解...

    大道相通,得鱼忘筌 - 从Oracle的SQL优化到MySQL的SQL优化.pdf

    总之,不管是对于Oracle还是MySQL,SQL优化都是一个涉及多个层面和细节处理的过程。了解每个系统的内部机制以及优化策略,结合实际的数据库使用情况,可以帮助DBA在不同的数据库环境下,有效地实现SQL优化目标。

    Effective MySQL之SQL语句最优化(高清)

    《Effective MySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助读者分析和调优有问题的SQL语句。 内容简介  《Effective MySQL之SQL语句最优化》主要内容:  ●找出收集和诊断问题必备的分析...

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

    本PPT课件主要讲述了MySQL数据库优化的重要知识点,特别是SQL优化方面的内容。从执行计划、SELECT语句、IN和EXIST语句、LIMIT语句、RAND函数、Order by、Group by、Distinct和Count等方面对MySQL数据库优化进行了...

    《Effective MySQL之SQL语句最优化》手册

    总的来说,《Effective MySQL之SQL语句最优化》旨在帮助读者掌握一系列实战性的SQL优化技巧,无论是在数据库设计、开发还是运维阶段,都能为提升数据库系统的整体性能提供有力支持。通过阅读本书,你将能够更有效地...

    MySQL性能优化 SQL优化方法技巧

    ### MySQL性能优化与SQL优化方法技巧 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还...

    《Effective MySQL之SQL语句最优化》数据库SQL

    综上所述,《Effective MySQL之SQL语句最优化》涵盖了SQL优化的各个方面,从基础的索引使用到高级的查询优化技巧,再到数据库设计和参数调整,都是提升数据库性能的重要知识点。通过学习和实践,我们可以有效地优化...

    Effective MySQL之SQL语句最优化

    "Effective MySQL之SQL语句最优化"这本书深入探讨了如何通过优化SQL查询来提高MySQL数据库的效率。以下是基于这个主题的一些关键知识点: 1. **索引优化**:索引是数据库性能提升的核心。书中的内容可能涵盖如何...

    MySQL技术内幕 SQL编程及优化.pdf

    2. SQL优化 2.1优化SQL的一般步骤 2.2 索引问题. 2.3两个常用的优化技巧 2.4常用SQL优化 2.5常用SQL技巧 3.优化数据库对象 3.1优化表的数据类型逆规范化 3.2提高查询速度 4.锁问题 4.1MyISQM表锁 4.2...

    传智播客mysql的sql优化

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,SQL优化是提高数据库性能的关键步骤,尤其对于有大量数据和高并发访问的应用来说更是如此。传智播客的MySQL SQL优化课程针对已有数据库开发经验的开发者,旨在...

    sql查询优化(提高MySQL数据库查询效率的几个技巧)

    SQL 查询优化(提高 MySQL 数据库查询效率的几个技巧) 在 MySQL 数据库中,查询优化是一个非常重要的方面。在实际应用中,高效的查询可以提高整个系统的性能和响应速度。下面我们将介绍几个提高 MySQL 数据库查询...

    mysql优化sql语句的优化(索引,常用小技巧.)

    ### MySQL优化之SQL语句与索引优化 #### 数据库设计合理性 在MySQL数据库的优化过程中,合理设计数据库(表)至关重要。一个合理的数据库设计能够有效地提高查询性能、减少数据冗余并确保数据完整性。 - **3NF**...

    《Effective MySQL之SQL语句最优化》PDF

    《EffectiveMySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,...《EffectiveMySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助读者分析和调优有问题的SQL语句。

    mysql优化-sql高级

    mysql优化从以下几个方面介绍 mysql的架构 索引优化分析 查询截取分析 mysql锁机制 主从复制

    mysql-sql优化-小米开源-soar

    小米开源的SOAR(SQL Optimizer And Rewriter)是一个专门针对MySQL数据库的SQL优化工具,它旨在帮助开发者和DBA更有效地诊断和优化SQL查询。 SOAR的主要功能包括: 1. **SQL诊断**:通过对SQL语句的分析,提供慢...

    MySQL教程SQL优化

    MySQL教程SQL优化 MySQL 是一种流行的开源关系数据库管理系统,广泛应用于各种 Web 应用程序中。随着数据量的增加,数据库的性能变得越来越重要。因此,MySQL 优化是保证数据库性能的关键步骤。本文将详细介绍 ...

    MYSQL.rar_MYSQL_mysql 优化_mysql优化_mysql备份_sql优化

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理各种类型的数据。为了确保数据库高效运行,需要进行一系列的优化操作,包括结构优化、查询优化、配置优化和硬件优化。本资料包“MYSQL.rar”提供了...

    基于mysql的sql常规优化

    sql常用优化手段

Global site tag (gtag.js) - Google Analytics