- MySQL优化是一个综合性技术,基本优化技术包括:
-
- 表结构设计合理,符合最基本的3NF
- 添加适当的索引:主键索引,普通索引,唯一索引,全文索引
- 分表技术:水平分隔,垂直分隔
- 存储过程,是一种预编译的执行计划,MySQL编译是比较耗时的,存储过程作为已编译的数据库对象可以提升查询速度
- 修改MySQL配置文件,my.ini可以配置缓存大小、排序缓存大小、最大查询并发数等;
- 读写分离,insert、delete、update是少频应用,select是高频应用,可以将增删改操作分发到独立的服务器,select操作分发到另外服务器(也可以是分布式服务器)
【会】使用索引
1、推荐使用 in
SQL1:select datekey, revenue from compdeal_stat_weekly where datekey >= 20150504 and datekey <= 20150525 and cityid = 1 and siteid = 42 and classid = 226 and categoryid = -999;
SQL2:select datekey, revenue from compdeal_stat_weekly where datekey in (20150504, 20150511, 20150518, 20150525) and cityid = 1 and siteid = 42 and classid = 226 and categoryid=-999;
说明:周表用每周的周一标示本周交易信息,所以20150504~20150525中datekey只包含20150504, 20150511, 20150518, 20150525
二者执行计划分别如下
从执行计划中,我们发现二者都用到primary key,但是SQL1检索的rows达到609293行,而SQL2检索的rows只有4行,说明SQL1没有用到cityid, siteid, classid, categoryid这几个索引;
结论:使用索引字段最好不要出现>= <=这样对MySQL来说模糊的条件,而是使用确定性的查询条件,比如in
2、注意索引的顺序
查询需求:查询交易信息
SQL1:select datekey, classid, categoryid, revenue from compdeal_stat_weekly where siteid = 42;
SQL2:select datekey, classid, categoryid, revenue from compdeal_stat_weekly where datekey > 0 and siteid = 42;
说明:表中datekey全部是都是大于0的
二者执行计划分别如下:
从执行计划我们可以观察到:
- type:SQL1的type是ALL,表示全表扫描,也就是说没有用到索引;SQL2的type是range,以范围的形式使用索引
- key:SQL1的key为null,SQL2的key为primary,再次说明SQL1没有使用索引
- key_len:SQL1的key_len为null,没有用到索引,SQL2的key_len为4
- rows:SQL1的row为1218479,SQL2的rows为609293,是前者的一半
结论:对于复合索引,如果在查询条件中不使用前面的索引字段,只使用靠后的索引字段,是不会使用任何索引字段的;所以需要创造条件使用到左侧的索引字段;
- 3、查询条件中如果有or,并且有不是索引字段作为查询条件,那么所有索引也不会使用;
- 4、对于char或者vachar类型的字段使用索引进行查询时,like ‘%ly’,这种模糊查询不会使用到索引;like 'he%'可以使用索引;对于前者可以使用MySQL相应的function
相关推荐
MySQL性能优化金字塔法则 MySQL性能优化是指通过调整MySQL数据库的配置、优化数据库结构和查询语句等方式,提高MySQL数据库的性能和响应速度,以满足应用程序的需求。MySQL作为最流行的开源数据库之一,被广泛应用...
"MySQL性能优化和高可用架构实践" 本书《MySQL性能优化和高可用架构实践》是一本详细介绍MySQL性能优化和高可用架构实践的书籍,旨在帮助读者提升MySQL数据库的性能和可靠性。本书的内容涵盖了查询优化的基本原则和...
MySQL性能优化是一个涵盖广泛的主题,涉及多个层面,包括SQL语句优化、索引优化、数据库表结构优化、系统级配置优化以及服务器硬件优化。以下是对这些方面进行详细说明: 1. **SQL语句优化** - **慢查询日志**:...
### MySQL性能优化知识点详解 #### 一、背景及目标 - **目的**:厦门游家公司(4399.com)为了提升员工技能水平,制定了这份MySQL性能优化教程,旨在为已有一定MySQL使用经验的工程师提供实战指导。 - **适用场景*...
MySQL性能优化与架构设计是数据库管理员、开发人员和系统管理员关注的重要领域,因为数据库性能直接影响到应用程序的响应速度和整体用户体验。本资料提供了一个全面的视角,深入探讨了如何优化MySQL的性能并进行有效...
MySQL性能优化是数据库管理员和开发人员的关键技能,它涉及到如何有效地使用SQL语句、存储过程和函数,以提高数据查询速度和系统整体效率。本手册将深入探讨这些关键领域,帮助你理解并实施最佳实践。 在SQL语句...
MySQL性能优化是数据库管理中的关键环节,特别是在高并发场景下,优化MySQL的性能对于提升系统整体效率至关重要。本教程将深入探讨MySQL性能优化的各个方面,帮助你理解并实践有效的优化策略。 首先,我们来了解**...
【标题】:“百度mysql性能优化ppt”所涉及的知识点涵盖了MySQL数据库在性能调优方面的多个重要环节。在MySQL性能优化中,我们关注的核心是提升数据处理速度,减少资源消耗,从而提高系统的整体效率。 【描述】:...
MySQL性能优化是一个涵盖广泛的主题,包括但不限于查询优化、索引策略、存储引擎选择、数据库架构设计、资源管理和配置调整等多个方面。以下是对这些关键知识点的详细说明: 1. **查询优化**:这是性能优化的基础,...
MySQL性能优化是数据库管理中的关键环节,它直接影响到应用程序的响应速度和整体系统效率。以下是一些关于MySQL性能优化的重要知识点: 1. **索引优化**:索引是提升查询速度的关键,合理创建主键、唯一索引和普通...
总结来说,MySQL性能优化是一个系统工程,涵盖查询优化、数据库结构优化和服务器配置优化等多个层面。通过掌握这些优化手段,我们可以有效减少系统瓶颈,提高数据库响应速度,从而提升整个应用的性能。在实际操作中...
MySQL 性能优化详解 MySQL 是目前使用最多的开源数据库,但是 MySQL 数据库的默认设置性能非常的差,仅仅是一个玩具数据库。因此,在产品中使用 MySQL 数据库必须进行必要的优化。优化是一个复杂的任务,本文描述 ...
MySQL性能优化是一个涵盖广泛的主题,涉及数据库设计、SQL查询优化、索引策略等多个方面。以下是对标题和描述中提到的一些关键知识点的详细说明: 1. **表的优化**: - **定长与变长字段的分离**:将定长字段(如...
### MySQL性能优化教程知识点概述 #### 一、MySQL执行优化 **1.1 背景及目标** - **背景**: 针对已具备一定MySQL使用经验的工程师,特别是适用于高并发、海量数据处理的互联网环境。 - **目标**: 通过对MySQL性能...
MySQL性能优化是数据库管理员和开发人员的关键技能,尤其在大数据量和高并发的业务场景下。本教程由知名IT专家caoz提供,旨在帮助你深入理解MySQL的性能调优策略,提升数据库系统的运行效率。 一、索引优化 索引是...
MySQL性能优化诊断脚本是一种非常实用的工具,用于检测和分析MySQL数据库的性能问题。`tuning-primer.sh`就是这样一个脚本,它通过运行一系列的查询和检查,为数据库管理员提供有关系统性能的深入见解,并提出可能的...
MySQL性能优化与架构设计是数据库管理员和开发人员必须掌握的关键技能之一。MySQL作为一个广泛使用的开源关系型数据库管理系统,其性能优化对于提升应用的整体性能至关重要。本资料主要关注MySQL的架构理解、性能...
### MySQL性能优化综述 MySQL作为一款广泛使用的开源关系型数据库管理系统,在许多应用场景中都需要针对其性能进行优化。本文将从几个关键方面详细介绍如何优化MySQL的性能。 #### 1. 最底层优化 - **参数优化**:...