网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL中的索引

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
索引
    1.什么是索引?
    索引是与表或视图关联的独立的、物理的数据库结构,可以加快从表或视图中检检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B树)中,是SQLServer可以快速有效地查找与键值关联的行。
    数据库中的索引与书籍的目录非常相似,在数据库中索引使数据库程序无需对整个表进行扫描,就可以找到所需数据,数据库索引是一列或多列生成的键。
    2.索引的作用
    索引的作用就是为了提高数据库从表或视图中查询数据的速度,改善数据库性能。索引页需要空间来存放这些键,这些存放索引的空间在数据库中称为索引页。
    索引页:数据库中存储索引的数据页,存放键值以及指向数据行位置的指针。
    3.索引分类:索引可以分为三类:唯一索引、聚集索引、非聚集索引
    1)唯一索引:不允许有两行相同的索引值,所以唯一所以一般在主键或创建了唯一约束的列上创建。当在列上创建了唯一约束后,将自动在此列上创建一个唯一索引。
    2)聚集索引:聚集索引根据数据行的键值在表或视图中排序和存储这些数据行,即表中行的物理顺序与索引顺序相同。每个表只能有一个聚集索引,因为数据行本身只能按照一个顺序排序。如果表具有聚集索引,则改变成为聚集表,表中的数据行按索引顺序进行排序;如果表中没有聚集索引,则其数据行存储在一个称为堆的无序结构中。
    3)非聚集索引:非聚集索引具有独立于数据行的结构。非聚集索引宝航非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。从非聚集索引中的索引行指向数据行的指针称为行定位器,行定位器的结构取决于数据页是存储在堆中还是数据表中。对于堆,行定位器是指向行的指针;对于聚集表,行定位器是聚集索引键。每个表可以有多个非聚集索引。
    索引可以减少为返回查询结果集而必须读取的数据量,还可以强制表中的行具有唯一性,从而确保表数据的完整性。
    2.如何创建索引?
    创建索引的两种方式:使用SQLServerManagementStudio和使用T-SQL语句。
    1)使用SQLServerManagementStudio创建索引。
    2)使用T-SQL语句创建索引。
    语法:
    Create[UNIQUE][CLUSTERED|NOCLUSTERED]INDEXindexnameONtablename
    (columnname[,columnname]……)
    [WITHFILLFACTOR=x]
    语法说明:UNIQUE指定创建的是唯一索引,可选项。CLUSTERED、NOCLUSTERED指定是聚集索引还是非聚集索引,可选项。indexname表示索引名,索引的命名规范是“ix_表名称_列名称”。FILLFACTOR表示填充因子,用来设置索引页数据填充的空间百分比,即每个索引页的剩余空间。指定值范围是0~~100,假如取值为70%,则意味着还有30%的空间供以后使用。0等同于100,意味着页级别几乎已满,但留出了一些空间,至少能在添加一个索引行。
    事例:
    useHR
    go
    ifexists(selectnamefromsysindexeswherename='ix_expertise_skilllevel')
    dropindexexpertise.ix_expertise_skilllevel
    createnonclusteredindexix_expertise_skilllevelnoexpertise(skilllevel)withfillfactor=30
    go
    事例2:
    select*fromexpertisewith(index=ix_expertise_skilllevel)whereacquiredDatebetween'2000-1-1'and'2010-1-1'、
    若存在多个索引时,可以使用WITH(index=索引名)显示指定索引进行查询。
    注意:所用索引可以加快数据检索速度,但没有必要为每个列都创建索引,因为索引自身也需要维护。
    可以依据下面的标准选择创建索引:①该列用于频繁搜索;②该列用于对数据进行排序;③该列中重复值少。
    以下列不适合建立索引:①列中重复值多;②表中数据少(为小型表建立索引是不必要的,因为索引的时间可能比检索表的时间还要长);③频繁进行插入操作的列(因为每次新添加了数据,索引都需要重新维护)
    
  • 上一篇资讯: SQL习题
  • 下一篇资讯: SQL中常见问题
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师