数据库索引实例之三

简介:

参照博客某社区600万用户数据导入MYSQL、MSSQL、Oracle数据库方法中“ 3.3为数据表添加年龄列(2012-6-13)”提到的方法创建测试数据库。

1.无索引状态

1.1统计 select count(*)

然后执行query1,统计年龄在20到30之间的人数。

set autotrace on
select count(*) from csdnuser3 where age between 20 and 30;

查询与统计结果如下

View Code

再次执行query1,查询与统计结果如下

View Code

对照上述两次查询,我们可以发现:

  1. 两次physical reads=47702 没有改变,
  2. 第一次consistent gets=47795,第二次 consistent gets=47707,略微改变。

1.2查询 select *

我们查询所有年龄在20到30之间的人员,执行如下查询语句query2

autotrace traceonly
select * from csdnuser3 where age between 20 and 30;

查询统计结果如下:

View Code

在执行一次query2

查询统计结果如下:

View Code

对比上述两次查询,我们可以发现:

因为查询的数据已经在缓存中,所以physical reads=0

consistent gets相对于第一次的142441,第二次为142322,略微有些想将。

2.为age字段添加索引

在age字段上添加索引

--创建索引
create index IX_CSDNUSER3_AGE on CSDNUSER3(AGE);

2.1统计 select count(*)

执行query1以后,查询分析结果如下:

View Code

再执行一次query1,查询分析结果如下:

View Code

对比上述两次查询可以发现:

  1. consistent gets略微想将,最后在2790趋于稳定
  2. physical reads因为第一次的执行而产生缓存,所以第二次physical reads=0
  3. 相对于1.1中稳定的consistent gets=47707,在age字段上加了索引以后,现在的consistent gets=2790,查询效率明显挺高。这表明在age字段上加索引对于select count(*)类型的查询,可以提升查询效率。

2.2查询 select *

执行query2以后,查询分析结果如下:

View Code

再次执行query2,查询分析结果如下:

View Code

对比上述两次查询,我们可以发现:

  1. rows processed= 1429651 刚好就是查询结果一共的条目数
  2. consistent gets 两次有略微想将,最后在142322趋于稳定。当时相对于1.1中select count(*)类型的查询,此处 consistent gets更大。
  3. 相对于1.2中无索引的select *,我们发现consistent gets都是142322,表明在age字段上加索引,对于select *类型的查询,没有提高查询效率。

3.主键索引

为什么要在主键上加索引,这是因为表连接的时候效率提高。主键是cluster索引,而其他为非cluster索引。

 

 本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/06/13/2547817.html,如需转载请自行联系原作者

目录
相关文章
|
27天前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
46 3
|
27天前
|
数据库 索引
深入理解数据库索引技术:回表与索引下推详解
【10月更文挑战第23天】 在数据库查询性能优化中,索引的使用是提升查询效率的关键。然而,并非所有的索引都能直接加速查询。本文将深入探讨两个重要的数据库索引技术:回表和索引下推,解释它们的概念、工作原理以及对性能的影响。
50 3
|
26天前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
26天前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
108 61
|
26天前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
93 57
|
13天前
|
数据库 索引
数据库索引
数据库索引 1、索引:建立在表一列或多列的辅助对象,目的是加快访问表的数据。 2、索引的优点: (1)、创建唯一性索引,可以确保数据的唯一性; (2)、大大加快数据检索速度; (3)、加速表与表之间的连接; (4)、在查询过程中,使用优化隐藏器,提高系统性能。 3、索引的缺点: (1)、创建和维护索引需要耗费时间,随数据量增加而增加; (2)、索引占用物理空间; (3)、对表的数据进行增删改时,索引需要动态维护,降低了数据的维护速度。
29 2
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
64 3
Mysql(4)—数据库索引
|
23天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
118 1
|
26天前
|
缓存 负载均衡 监控
数据库多实例的负载均衡技术深入
【10月更文挑战第23天】数据库多实例负载均衡技术是确保数据库系统高效运行的重要手段。通过合理选择负载均衡策略、实时监控实例状态、不断优化调整,能够实现资源的最优分配和系统性能的提升。在实际应用中,需要根据具体情况灵活运用各种负载均衡技术,并结合其他相关技术,以满足不断变化的业务需求。
|
15天前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
下一篇
无影云桌面