`

索引的作用

 
阅读更多

 

索引的作用就象书的目录,给出条件查找目录找出所需要的内容 
主键索引和聚合索引 

我们来看:(gid是主键,fariqi是聚合索引列): 

select top 10000 gid,fariqi,reader,title from tgongwen 
用时:196 毫秒。 扫描计数 1,逻辑读 289 次,物理读 1 次,预读 1527 次。 

select top 10000 gid,fariqi,reader,title from tgongwen order by gid asc 
用时:4720毫秒。 扫描计数 1,逻辑读 41956 次,物理读 0 次,预读 1287 次。 

select top 10000 gid,fariqi,reader,title from tgongwen order by gid desc 
用时:4736毫秒。 扫描计数 1,逻辑读 55350 次,物理读 10 次,预读 775 次。 

select top 10000 gid,fariqi,reader,title from tgongwen order by fariqi asc 
用时:173毫秒。 扫描计数 1,逻辑读 290 次,物理读 0 次,预读 0 次。 

select top 10000 gid,fariqi,reader,title from tgongwen order by fariqi desc 
用时:156毫秒。 扫描计数 1,逻辑读 289 次,物理读 0 次,预读 0 次。 

从以上我们可以看出,不排序的速度以及逻辑读次数都是和“order by 聚集索引列” 的速度是相当的,但这些都比“order by 非聚集索引列”的查询速度是快得多的。 
同时,按照某个字段进行排序的时候,无论是正序还是倒序,速度是基本相当的。 
分享到:
评论
1 楼 lgs0626 2012-05-29  
1.复合索引有什么作用?       
1。你的索引这样创建      create   index   yourindex   on   yourtable(id,name,city)   
2.当你在查询的时候      select   id,name,city      from   yourtable      这时候查询优化器,不在扫描表了,而是直接的从索引中拿数据,因为索引中有这些数据,   这叫覆盖式查询,这样的查询速度非常快。    2.  用聚集索引、唯一值索引、不重新计算索引、文件组索引。到底哪个好些?

   在创建聚集索引之前,应先了解您的数据是如何被访问的。可考虑将聚集索引用于:             包含大量非重复值的列。           使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、<   和   <=。           被连续访问的列。           返回大型结果集的查询。           经常被使用联接或   GROUP   BY   子句的查询访问的列;一般来说,这些是外键列。对   ORDER   BY   或   GROUP   BY   子句中指定的列进行索引,可以使   SQL   Server   不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。           OLTP   类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。                  聚集索引不适用于:             频繁更改的列        这将导致整行移动(因为   SQL   Server   必须按物理顺序保留行中的数据值)。这一点要特别注意,因为在大数据量事务处理系统中数据是易失的。           宽键        来自聚集索引的键值由所有非聚集索引作为查找键使用,因此存储在每个非聚集索引的叶条目内。                     在创建非聚集索引之前,应先了解您的数据是如何被访问的。可考虑将非聚集索引用于:             包含大量非重复值的列,如姓氏和名字的组合(如果聚集索引用于其它列)。如果只有很少的非重复值,如只  有  1   和   0,则大多数查询将不使用索引,因为此时表扫描通常更有效。           不返回大型结果集的查询。           返回精确匹配的查询的搜索条件(WHERE   子句)中经常使用的列。           经常需要联接和分组的决策支持系统应用程序。应在联接和分组操作中使用的列上创建多个非聚集索引,在任何外键列上创建一个聚集索引。           在特定的查询中覆盖一个表中的所有列。这将完全消除对表或聚集索引的访问。  

3. 总结要点:

一个表可以有多个非聚集索引,但只能有一个聚集索引。

如果该表上尚未创建聚集索引,且在创建   PRIMARY   KEY   约束时未指定非聚集索引,

PRIMARY   KEY   约束会自动创建聚集索引

4。例子:

CREATE   TABLE   tbl_test   (              col_pk         INT                         NOT   NULL,              col_1           TINYINT                 NOT   NULL,              col_2           SMALLINT               NOT   NULL,              col_3           TINYINT                 NOT   NULL,              col_4           DATETIME               NULL,                      col_5           DATETIME               NULL              );  

   GO  
      
CREATE   CLUSTERED   INDEX   idx_tbl_test_00      ON   tbl_test   (              col_4   ASC,              col_5   ASC,              col_1   ASC,              col_2   ASC,              col_3   ASC      );      GO           CREATE   NONCLUSTERED   INDEX   idx_tbl_test_01   ON   tbl_test      (              col_1   ASC,              col_2   ASC,              col_3   ASC      )      GO           ALTER   TABLE   tbl_test      ADD   CONSTRAINT   pk_tbl_test   PRIMARY   KEY   (              col_pk      );      GO 



5。例子2

--增加列 alter table [TableName] add [P_ID] bigint not null default 0
--删除列 alter table [TableName] drop column [P_ID]
--设置主键 alter table [TableName] add constraint PK_TableName primary key  (P_ID)
--删除主键 alter table [TableName] drop constraint PK_TableName
--创建聚集索引(一个表中允许一个聚集索引) CREATE  CLUSTERED  INDEX [tTopIndex] ON  [TableName] ([P_ID]) ON [PRIMARY]
--创建非聚集索引 CREATE  INDEX [tTopIndex] ON TableName ([P_ID]) ON [PRIMARY]
--删除索引 drop index [TableName].[tTopIndex]
--增加字段说明 EXECUTE sp_addextendedproperty N'MS_Description', N'照片ID', N'user', N'dbo', N'table', N'TableName', N'column', N'P_ID'

相关推荐

    充分利用索引作用提高Oracle数据库的性能.pdf

    本文主要探讨Oracle数据库索引的作用、分类以及如何通过索引来优化数据库性能。 **1. 索引的作用** 索引如同书籍的目录,可以快速定位到数据的位置,避免全表扫描。在Oracle数据库中,索引包含了一个或多个列的值...

    创建索引的作用利弊

    ### 创建索引的作用及其利弊分析 在数据库管理与优化领域,索引是提升查询效率的重要工具之一。本文将从创建索引的作用出发,详细探讨其背后的技术原理、实际应用场景以及可能带来的利弊。 #### 一、索引的基本...

    B+树作为数据库的索引

    5. **所有关键字都在叶子节点**:数据存取只涉及叶子节点,非叶子节点仅起到索引作用,降低了数据访问的深度。 **B+树的优势:** 1. **平衡性**:B+树通过保持高度平衡,确保了查询效率的稳定性,无论数据分布在树...

    索引_外发.zip

    而在文件系统中,索引作用于组织和检索文件。每个文件都有其元数据,包括文件名、创建时间、修改日期等属性,这些属性通常会存储在索引节点(inode)或目录项中,以便系统快速检索文件。文件系统的索引机制使得用户...

    数据库索引的作用和优点缺点

    什么是索引  拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K 。为了加快查找的速度,汉语字(词)典一般都有按拼音、笔画、偏旁...

    实验10索引设计和管理-大型数据库-浙江财经学院-东方学院-信息实验报告.pdf

    从给定文件的标题和部分内容来看,这篇信息实验报告主要围绕的是大型数据库环境下的索引设计与管理...通过这些内容的学习,可以加深对大型数据库系统中索引作用与管理的理解,从而更好地应用在实际的数据库优化工作中。

    SQL Server 索引中include的魅力(具有包含性列的索引)

    SQL Server 索引中 include 的魅力(具有包含性列的索引) SQL Server 索引中 include 的魅力(具有包含性列的索引)是指在非聚集索引中添加非键列,以扩展索引的功能,提高查询性能。通过将非键列添加到非聚集索引...

    聚集索引与非聚集索引的区别

    #### 一、索引的基础概念及作用 索引在数据库管理系统中扮演着至关重要的角色,它能够显著提高查询效率,减少系统的响应时间。简单来说,索引就像是图书的目录,帮助用户更快地定位到所需的信息。在数据库领域,...

    InDesignCC2021 中文索引插件

    在实际应用中,插件提供的“INDEXes.pdb”、“INDEXes.sdk.pln”和“(INDEXes.sdk Resources)”文件起着关键作用。“INDEXes.pdb”可能是插件的数据文件,用于存储索引的相关数据和设置;“INDEXes.sdk.pln”可能是...

    labview中的数组索引详细讲解

    LabVIEW 中的数组索引详细讲解 LabVIEW 中的数组索引是指在循环结构中自动完成数组元素的索引或累积的过程。这种能力称为自动索引(Auto-indexing)。在 LabVIEW 中,For 循环中自动索引功能是默认启用的,而 While...

    设计数据库中的索引有什么作用

    在数据库设计中,索引是一种至关重要的数据结构,它的主要作用是提高数据查询的效率,降低数据访问的时间成本。下面将详细阐述数据库索引的作用、原理以及如何选择和使用索引。 首先,索引能够加快数据检索速度。当...

    oracle索引与分区索引介绍

    分区索引可以是局部索引或全局索引,全局索引可以跨越多个分区,而局部索引则只能作用于一个分区。 创建分区索引 创建分区索引可以使用以下语句: ```sql CREATE INDEX &lt;index_name&gt; ON () GLOBAL PARTITION BY ...

    mysql 索引与执行计划

    ### MySQL 索引与执行计划 #### 一、索引与执行计划 ##### 1.1 索引入门 在深入探讨之前,我们首先需要理解什么是索引以及其重要性。 ###### 1.1.1 索引是什么 索引(Index)在MySQL中是一种帮助数据库高效获取...

    索引

    本篇文章将深入探讨索引的基本原理、类型以及其在实际应用中的作用。 首先,索引的创建基于某种数据结构,如B树、哈希表或位图等。B树( Balanced Tree)是最常见的一种,它允许数据在磁盘上保持有序,同时支持快速...

    MySql练习4:创建学生表和成绩表索引并查看索引.zip

    通过这次MySQL练习,你将更深入地理解索引的作用、创建方法以及查看索引的技巧,这对优化数据库性能至关重要。在实际应用中,根据业务需求和数据特性选择合适的索引策略,是数据库管理员和开发人员必备的技能之一。

    索引讲述什么是索引.txt

    索引的主要目的是为了提高数据检索的速度,同时也可以带来以下作用: - **保证数据的准确性**:唯一的索引值对应唯一的数据库记录,这样可以确保数据的准确性和唯一性。 - **加快检索速度**:索引可以显著提高检索...

    MySQL 索引最佳实践

    - **理解索引**:了解索引的基本概念、作用以及不同类型的索引。 - **设置最佳索引**:根据应用程序需求来设计最适合的索引方案。 - **解决常见限制**:了解MySQL索引的一些常见限制,并找到相应的解决方案。 #### ...

    合理使用索引技巧

    索引是数据库管理系统中不可或缺的一部分,它主要的作用在于提升查询效率。ISAM(Indexed Sequential Access Method)索引结构是IBM提出的一种常见实现方式,被广泛应用于各种数据库产品中。合理使用索引对于优化...

    索引的正确使用

    本文将深入探讨如何正确使用索引,并通过具体案例分析来帮助读者更好地理解索引的作用及其最佳实践。 #### 一、索引的重要性 索引类似于书籍的目录,可以帮助数据库快速定位数据的位置,从而加快数据检索的速度。...

    SqlServer索引工作原理

    索引的作用是加快数据的查询速度,使得数据库中的数据更易于管理和维护。 SqlServer索引工作原理可以分为两大类:聚簇索引和非聚簇索引。 聚簇索引是一种树形结构的索引,它的数据物理存储顺序和索引顺序一致的。...

Global site tag (gtag.js) - Google Analytics