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优化 #### 一、SQL优化 在MySQL数据库管理中,SQL查询的性能直接影响到系统的响应时间和资源消耗。通过合理的SQL优化,可以显著提高数据处理速度,降低服务器负载,提升用户体验。 ##### 1.1 ...
尽管如此,我将基于标题和描述中提供的关键词“Effective MySQL之SQL语句最优化”来构建知识点。 1. SQL语句最优化的概念:在数据库管理中,对SQL语句进行优化是提高数据库性能的关键环节。最优化的SQL语句能够在...
MySQL的SQL优化是数据库管理中的重要环节,尤其对于有经验的开发者来说,了解并掌握这一技能可以显著提升数据库性能,减少资源消耗。SQL优化主要涉及查询效率、索引使用、查询语句结构优化等多个方面。 首先,理解...
总之,不管是对于Oracle还是MySQL,SQL优化都是一个涉及多个层面和细节处理的过程。了解每个系统的内部机制以及优化策略,结合实际的数据库使用情况,可以帮助DBA在不同的数据库环境下,有效地实现SQL优化目标。
《Effective MySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助读者分析和调优有问题的SQL语句。 内容简介 《Effective MySQL之SQL语句最优化》主要内容: ●找出收集和诊断问题必备的分析...
本PPT课件主要讲述了MySQL数据库优化的重要知识点,特别是SQL优化方面的内容。从执行计划、SELECT语句、IN和EXIST语句、LIMIT语句、RAND函数、Order by、Group by、Distinct和Count等方面对MySQL数据库优化进行了...
总的来说,《Effective MySQL之SQL语句最优化》旨在帮助读者掌握一系列实战性的SQL优化技巧,无论是在数据库设计、开发还是运维阶段,都能为提升数据库系统的整体性能提供有力支持。通过阅读本书,你将能够更有效地...
### MySQL性能优化与SQL优化方法技巧 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还...
综上所述,《Effective MySQL之SQL语句最优化》涵盖了SQL优化的各个方面,从基础的索引使用到高级的查询优化技巧,再到数据库设计和参数调整,都是提升数据库性能的重要知识点。通过学习和实践,我们可以有效地优化...
"Effective MySQL之SQL语句最优化"这本书深入探讨了如何通过优化SQL查询来提高MySQL数据库的效率。以下是基于这个主题的一些关键知识点: 1. **索引优化**:索引是数据库性能提升的核心。书中的内容可能涵盖如何...
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优化课程针对已有数据库开发经验的开发者,旨在...
SQL 查询优化(提高 MySQL 数据库查询效率的几个技巧) 在 MySQL 数据库中,查询优化是一个非常重要的方面。在实际应用中,高效的查询可以提高整个系统的性能和响应速度。下面我们将介绍几个提高 MySQL 数据库查询...
### MySQL优化之SQL语句与索引优化 #### 数据库设计合理性 在MySQL数据库的优化过程中,合理设计数据库(表)至关重要。一个合理的数据库设计能够有效地提高查询性能、减少数据冗余并确保数据完整性。 - **3NF**...
《EffectiveMySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,...《EffectiveMySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助读者分析和调优有问题的SQL语句。
mysql优化从以下几个方面介绍 mysql的架构 索引优化分析 查询截取分析 mysql锁机制 主从复制
小米开源的SOAR(SQL Optimizer And Rewriter)是一个专门针对MySQL数据库的SQL优化工具,它旨在帮助开发者和DBA更有效地诊断和优化SQL查询。 SOAR的主要功能包括: 1. **SQL诊断**:通过对SQL语句的分析,提供慢...
MySQL教程SQL优化 MySQL 是一种流行的开源关系数据库管理系统,广泛应用于各种 Web 应用程序中。随着数据量的增加,数据库的性能变得越来越重要。因此,MySQL 优化是保证数据库性能的关键步骤。本文将详细介绍 ...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理各种类型的数据。为了确保数据库高效运行,需要进行一系列的优化操作,包括结构优化、查询优化、配置优化和硬件优化。本资料包“MYSQL.rar”提供了...
sql常用优化手段