4.4 多列索引索引可以创建在两列或多列上。多列索引也被称为混合索引或者连接索引。4.4.1 确定使用何种索引我们来看一个查询,这个查询根据WHERE语句的限制在表上使用两个不同的索引。我们首先创建这些索引。m...
索引也可以用来对查询结果进行排序。如果没有索引,MySQL会使用内部文件排序算法对返回的行按照指定顺序进行排序。请看下面的示例:mysql> EXPLAIN SELECT name,founded-> FROM artist-> WHERE name lik...
如果我们想要保证每个艺人都有一个唯一的名字,可以创建唯一索引。唯一索引有两个目的:●提供数据完整性以保证在列中任何值都只出现一次●告知优化器对给定的记录最多只可能有一行结果返回;这一点很重要,因为...
利用通配符可以通过索引来做模式匹配的工作。请看下面的示例:mysql> EXPLAIN SELECT artist_id, type, founded-> FROM artist-> WHERE name LIKE 'Queen%'\G********************* 1. row...
当一个查询中使用不止一个索引的时候,MySQL会试图找到一个最高效的索引。它通过分析每条索引内部数据分布的统计信息来做到这一点。本例中我们要查询创建于1980年的所有品牌,因此我们在artist表的type列上创建一...
索引的另一个好处就是可以提高关系表连接操作的性能。例如,下列SQL语句要获取指定艺人的专辑信息:mysql> EXPLAIN SELECT ar.name, ar.founded, al.name,al.first_released-> FROM artist ar-> INNER ...
假设在艺人数据表中按照出道时间来获取艺人信息是一个常用的操作,那我们就可以通过创建索引来避免每次都扫描整张表。如果在EXPLAIN的结果中看到type=ALL或者key=NULL,则可以判断这条查询扫描了整张表,如下所示...
4.3 单列索引单列索引是最基础的索引,这是一种建立在数据库表中特定列上的索引。MySQL并没有限制在一个表的索引的数量,然而创建索引还是会对性能有影响,我们会在后面的4.5节添加索引造成的影响中讨论这个问题...
在大多数情况下,你可以在现有的表上使用已有的索引优化SQL语句。读者可以回顾第2章介绍过的工具。在本章中我们将会进一步通过示例说明如何利用这些工具帮助我们优化SQL语句。下面是一个很普通的查询语句,用来获...
本章将用到一些示例表以及示例数据。下面就是主要用到的表:CREATE TABLE artist (artist_id INT UNSIGNED NOT NULL,type ENUM('Band','Person','Unknown','Combination...
本章我们将会讨论索引的各种类型、MySQL如何选择索引以及添加索引对系统整体性能的影响。我们还会介绍如何为特殊的给定查询创建索引。这并不是说如果你的环境中有类似的表就一定要自动创建相同的索引;这些索引示...
第1章 DBA五分钟速成... 11.1 识别性能问题... 21.1.1 寻找运行缓慢的SQL语句... 21.1.2 确认低效查询... 31.2 优化查询... 61.2.1 不应该做的事情... 61.2.2 确认优化... 71.2.3 正确的方式... ...
为了MySQL文化的过去、现在和未来!献给MySQL和Oracle社区的所有人:你们不仅仅是我的同事,更是我最好的朋友!如果没有来自身边所有人的帮助、支持以及贡献,我是不可能写出这本书的。我最希望感谢的人是我的妻...
Jay Pipes是Rackspace Cloud公司的软件工程师,他曾参与过多个和云计算基础设施以及数据库相关的项目。在此之前,他曾是Sun Microsystems公司的软件工程师和MySQL北美社区的社区关系经理。作为Pro MySQL(Apr...
Ronald Bradford是一位在关系型数据库领域拥有20多年丰富经验的专家。他拥有深厚的专业背景以及10年以上Ingres和Oracle系统的工作知识,在过去12年中他致力于MySQL——世界上最流行的开源数据库的发展。他曾在2...
MySQL数据库由于性能高、成本低、可靠性好等优点,已经成为最流行的开源关系型数据库产品,广泛地被使用在互联网上的中小型网站中。并且随着MySQL的不断成熟,以及一些企业特性的加入,它也逐渐被用于更大规模的...
作为一名日常DBA,最常重复的任务就是在生产环境中检查和优化运行的SQL语句。在MySQL软件安装、配置以及正常运行之后,监控数据库的性能问题就成为一项经常重复的工作。了解如何正确地截取有问题的SQL语句以及检...
《Effective MySQL之SQL语句最优化》是由MySQL专家Ronald Bradford撰著,书中提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释。本书希望能够通过一步步详细介绍SQL优化...
理解逻辑查询各个处理阶段对于理解SQL编程所需要的特殊观念是非常重要且有必要的。本章详细介绍了逻辑处理的11个步骤,3个过滤处理器ON、WHERE和HAVING,以及这3个过滤器的使用过程和不同之处。其中,稍微涉及了...
上一节介绍了逻辑查询处理,并且描述了执行查询应该得到什么样的结果。但是数据库也许并不会完全按照逻辑查询处理的方式来进行查询。图1-1显示了在MySQL数据库层有Parser和Optimizer两个组件。Parser的工作就是分...