zoukankan      html  css  js  c++  java
  • SQL 创建索引的作用以及如何创建索引

    SQL 创建索引的作用以及如何创建索引

    SQL 创建索引的作用

    一、使用索引的优点:

    1、通过唯一性索引(unique)可确保数据的唯一性

    2、加快数据的检索速度

    3、加快表之间的连接

    4、减少分组和排序时间

    5、使用优化隐藏器提高系统性能

    二、使用索引的原则:

    1、在需要经常搜索的列上创建索引

    2、主键上创建索引

    3、经常用于连接的列上创建索引

    4、经常需要根据范围进行搜索的列上创建索引

    5、经常需要排序的列上创建索引

    6、经常用于where子句的列上创建索引

    三、不创建索引的原则:

    1、查询很少使用和参考的列不建索引

    2、对只有少数值的列不建索引

    3、定义为text、image、bit的列不建索引

    4、当需要update性能远远高于select性能时不应建索引

    四、常用的命令:

    1、sp_helpindex :报告表或视图上的索引信息

    2、dbcc showcontig :显示指定表的数据和索引的碎片信息

    3、dbcc dbreindex :重建指定数据库中一个或多个索引

    4、dbcc indexdefrag :整理指定表或视图的聚集索引或辅助索引的碎片

    五、优化索引:

    1、重建索引(dbcc dbreindex) 

    2、索引优化向导

    3、整理指定的表或视图的聚集索引和辅助索引碎片(dbcc indexefrag) 

     

    如何创建索引

    CREATE INDEX 语句用于在表中创建索引。

    在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。 您可以在表中创建索引,以便更加快速高效地查询数据。

    用户无法看到索引,它们只能被用来加速搜索/查询。

    注释:1、更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

             2、唯一索引是指该字段不能有重复的值,而不是只能建立这一个索引。

     

    进入查询窗口后,输入下面的语句: 

    CREATE INDEX mycolumn_index ON mytable (myclumn) 

    这个语句建立了一个名为mycolumn_index的索引。你可以给一个索引起任何名字,但你应该在索引名中包含所索引的字段名,这对你将来弄清楚建立该索引的意图是有帮助的。 

    注意: 

    在本书中你执行任何SQL语句,都会收到如下的信息: 

    This command did not return data,and it did not return any rows 

    这说明该语句执行成功了。 

    索引mycolumn_index对表mytable的mycolumn字段进行。这是个非聚簇索引,也是个非唯一索引。(这是一个索引的缺省属性) 

    如果你需要改变一个索引的类型,你必须删除原来的索引并重建 一个。建立了一个索引后,你可以用下面的SQL语句删除它: 

    DROP INDEX mytable.mycolumn_index 

    注意在DROP INDEX 语句中你要包含表的名字。在这个例子中,你删除的索引是mycolumn_index,它是表mytable的索引。 

    要建立一个聚簇索引,可以使用关键字CLUSTERED。)记住一个表只能有一个聚簇索引。(这里有一个如何对一个表建立聚簇索引的例子: 

    CREATE CLUSTERED INDEX mycolumn_clust_index ON mytable(mycolumn) 

    如果表中有重复的记录,当你试图用这个语句建立索引时,会出现错误。但是有重复记录的表也可以建立索引;你只要使用关键字ALLOW_DUP_ROW把这一点告诉SQL Sever即可: 

    CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) 

    WITH ALLOW_DUP_ROW 

    这个语句建立了一个允许重复记录的聚簇索引。你应该尽量避免在一个表中出现重复记录,但是,如果已经出现了,你可以使用这种方法。 

    要对一个表建立唯一索引,可以使用关键字UNIQUE。对聚簇索引和非聚簇索引都可以使用这个关键字。这里有一个例子: 

    CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn) 

    这是你将经常使用的索引建立语句。无论何时,只要可以,你应该尽量对一个对一个表建立唯一聚簇索引来增强查询操作。 

    最后,要建立一个对多个字段的索引──复合索引──在索引建立语句中同时包含多个字段名。下面的例子对firstname和lastname两个字段建立索引: 

    CREATE INDEX name_index ON username(firstname,lastname) 

    这个例子对两个字段建立了单个索引。在一个复合索引中,你最多可以对16个字段进行索引。 

    用事务管理器建立索引 

    用事务管理器建立索引比用SQL语句容易的多。使用事务管理器,你可以看到已经建立的索引的列表,并可以通过图形界面选择索引选项。 

    使用事务管理器你可以用两种方式建立索引:使用Manage Tables窗口或使用Manage Indexes窗口。 

  • 相关阅读:
    【ORA-02049】超时分布式事务处理等待锁 解决方法
    Git使用出错:Couldn‘t reserve space for cygwin‘s heap, Win32
    JS身份证号码校验
    linux 下查看cpu位数 内核等参数命令(转)
    linux ps命令,查看进程cpu和内存占用率排序(转)
    JAVA图片验证码
    JAVA BigDecimal 小数点处理
    Linux命令大全
    Eclipse Java注释模板设置详解
    JSONArray的应用
  • 原文地址:https://www.cnblogs.com/len0031/p/3780920.html
Copyright © 2011-2022 走看看