• Sql Server数据库性能优化之索引


    最近在做SQL Server数据库性能优化,因此复习下一索引、视图、存储过程等知识点。本篇为索引篇,知识整理来源于互联网。

    索引加快检索表中数据的方法,它对数据表中一个或者多个列的值进行结构排序,是数据库中一个非常有用的对象。

    索引的创建

    #1使用企业管理器创建

    启动企业管理器--选择数据库------选在要创建索引的表------在表的下拉菜单中选择索引---在快捷菜单中选择新建索引--

    在新建索引对话框中单击“添加”按钮,弹出“从列表中选择列”,在该对话框中选择要添加到索引键的表列

    单击确定返回新建索引对话框,再点击确定完成索引的创建。

    #2使用T-sql语句创建索引。

    create index语句为给定表或视图创建一个改变物理顺序的聚集索引,也可以创建一个具有查询功能的非聚集索引。语法格式如下:

    create [unique] [clustered] [nonclustered] index index_name

    on {tabel/view} (column[dese/asc][....n])

    注: [unique] [clustered] [nonclustered]表示要创建索引的类型,以此为唯一索引,聚集索引,和非聚集索引,当省略unique选项时,建立非唯一索引.当省略clustered,nonclustered选项时.建立聚集索引,省略nonclustered选项时,建立唯一聚集索引。

    使用索引虽然可以提高系统的性能,增强数据检索速度,但它需要占用大量的物理存储空间,建立索引的一般原则如下:

    (1)只有表的所有者可以在同一表中创建索引。

    (2)每个表中只能创建一个聚集索引。

    (3)每个表中最多可以创建249个非聚集索引。

    (4)在经常查询的字段上建立索引。

    (5)定义text,image,bit数据类型的列上不要建立索引。

    (6)在外间上可以建立索引。

    (7)在主键列上一定要建立索引。

    (8)在那些重复的值比较多,查询较少的列上不要建立索引。

    查看索引

    #1使用企业管理器查看索引,步骤如下:

    (1)启动SQL Server management Studio并连接到SQLServer 2008数据库

    (2)选择指定的数据库,|展开要查看索引的表。

    (3)右击该表,在弹出快捷菜单中选择‘设计’命令

    (4)弹出‘表结构设计’对话框,右击该对话框,在弹出的快捷菜单中选择‘索引/键’命令

    (5)打开“索引/键”对话框,在对话框左侧选中某个索引,在对话框的右侧就可以查看此索引的信息,并可以修改相关信息。

    #2使用系统存储过程查看索引,语法格式如下:

    use database_name

    EXEC Sp_helpindex table_name

    #3利用系统表查看索引信息

    查看数据库中指定表的索引信息,可以利用该数据库中的系统表sysobjects和sysindexes进行查询,系统表sysobjects可以根据表明查找到索引表的ID号,再利用系统表sysindexes根据ID号查找到索引文件的相关信息。

    索引的修改

    #1使用企业管理器修改索引。

    #2使用T-SQL语句更改索引名称,语法格式如下:

    use database_name

    exec sp_rename ‘table_name.old_name’ ‘new_name’

    注:要对索引进行重命名时,需要修改的索引名格式必须为“表名.索引名”

    索引的删除

    #1使用企业管理器删除索引

    #2使用T-SQL语句删除索引,语法格式如下:

    drop Index table_name.index_name,.....n

    注:drop index语句不能删除通过PRINARY KEY和UNIQUE约束创建的索引,若要删除该约束相应的索引,请使用带有DROP CONSTRAINT子句的ALTER TABLE.

    墨匠
  • 相关阅读:
    一份面试题+整理的答案
    java获取本机IPV4地址,非127.0.0.1
    List去重
    禁止iframe页面时产生历史记录
    js打开新窗口并且不被拦截
    ifream 跨域实现高度自适应
    css版tooltip
    jQuery遮罩插件 jQuery.blockUI.js
    SpringMVC 传递相同名称的参数
    SpringMVC接收List型参数
  • 原文地址:https://www.cnblogs.com/Jashinck/p/8765560.html
Copyright © 2020-2023  润新知