51Testing丛书:性能测试进阶指南—LoadRunner 11实战(2)

发表于:2012-5-04 11:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈霁    来源:51Testing软件测试网原创

分享:

  什么是索引呢?

  打个比方,你有很多的小抽屉,每个抽屉里面放一些杂物,假如你要找东西,最原始的方法就是一个个抽屉翻,这就是没有索引的情况。

  假如聪明一点,给抽屉编号(唯一键),把哪个号码的抽屉有什么东西记录在纸上,找东西先看看这张纸,这就是普通索引,假如你要知道哪个抽屉有什么,你可以在纸上迅速找到抽屉号码(大家知道这是使用查找树),然后得到相关的信息,这种情况普通索引是很快的;但是要找到一个特定的东西哪些抽屉有,你就要把整张纸遍历一次,这就是LIKE查询,假如你要找哪些抽屉同时有两种甚至更多种物品,LIKE就更加烦琐了。假如一个表有上千万的记录,大家可以想象查询的代价。

  在索引中又分为聚集索引和非聚集索引两种索引模式。

  1)聚集索引

  表中存储的数据按照索引的顺序存储,检索效率比普通索引高,索引占用硬盘存储空间小(1%左右),但对数据新增/修改/删除的速度影响比较大(降低)。

  如下。

  ● 无索引,数据无序。

  ● 有索引,数据与索引同序。

  ● 数据会根据索引键的顺序重新排列数据。

  ● 一个表只能有一个索引。

  ● 叶节点的指针指向的数据也在同一位置存储。

  TSQL语法:create CLUSTERED INDEX idxempID ON emp(empID)

  2)非聚集索引

  不影响表中的数据存储顺序,检索效率比聚集索引低,索引占用硬盘存储空间大(30%~40%),对数据新增/修改/删除的影响很少。特点如下。

  ● 一个表可以最多可以创建249个非聚集索引。

  ● 先建聚集索引才能创建非聚集索引。

  ● 非聚集索引数据与索引不同序。

  ● 数据与非聚集索引在不同位置。

  ● 非聚集索引在叶节点上存储,在叶节点上有一个“指针”直接指向要查询的数据区域。

  ● 数据不会根据非聚集索引键的顺序重新排列数据。

  TSQL语法:create NONCLUSTERED INDEX idximpID ON emp(empID)

  对于索引有一些错误观点,具体如下。

  ● 主键就是聚集索引。

  ● 只要建立索引就能显著提高查询速度。

  ● 把所有需要提高查询速度的字段都加进聚集索引,以提高查询速度。

  一般来说以下规则是正确的:

  ● 用聚集索引比用非聚集索引的主键速度快。

  ● 用聚集索引比用一般的主键做order by时速度快,特别是在小数据量情况下。

  ● 使用聚集索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例减少,而无论聚集索引使用了多少个。

  ● “水可载舟,亦可覆舟”,索引也一样,不要过度使用索引。

53/5<12345>
精选软件测试好文,快来阅读吧~

精彩评论

  • 夜修罗
    2013-2-25 10:23:10

    我想请问一下,这下面两个语句有差别吗?为什么执行用时会不同?

     ● 在主键上建立聚集索引,在fariq上建立非聚集索引

      select gid,fariqi,neibuyonghu,title
      from Tgongwen
      where fariqi> dateadd(day,-90,getdate())
      用时:53763毫秒(54秒)

      ● 将聚集索引建立在日期列(fariqi)上

      select gid,fariqi,neibuyonghu,title
      from Tgongwen
      where fariqi> dateadd(day,-90,getdate())
      用时:2423毫秒(2秒)

  • zbj793989849
    2012-6-29 13:43:51

    可以下载吗?

  • flyingboy218
    2012-5-23 17:52:45

    有些晕,有些抽象

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号