zoukankan      html  css  js  c++  java
  • 索引学习笔记

    一、    索引概述

      索引是数据库规划和系统维护至关重要的部分,添加正确的索引能够极大减少查询的执行时间。在正式学习索引知识前,将了解SQL Server 的数据存储机制,包括索引分配策略以及内部结构。

    一、    数据库文件 

      与数据库有关的文件有两种:主数据库文件(*.MDF)、数据库日志文件(*.Ldf)。

      主数据库文件是数据存储的地方。

      数据库日志文件时记录从最后一次把数据提交到数据库中心以来,发生在数据库上的事情连续记录。

    1.  区段 

      区段(extent)是用来为表和索引分配空间的基本存储单元。每个区段由8个连续的数据页组成(64k)

      区段、数据页、数据行关系图如下所示:

    1.  数据页

      页是到达数据行的最后一个级别。尽管每个区段中页得数据时固定的,但是页中的行数是不固定的,这完全取决于行的大小,是可变的。数据页结构图:

      

    1.  数据行

      通常,行的大小能够达到8K,即一行数据占用一页数据页。

    一、    理解索引

    1.  B树【平衡二叉树】

      

    2.  索引类型和索引导航

    3.  聚集索引

      聚集索引是唯一的对与一个表而言,表中数据的物理顺序和表的聚集索引的顺序相同。聚集索引的特殊之处在于其页级是真正的数据

      注意:当新纪录插入到索引结构的中间是,会发生常规的页拆分,来自原来页中后半部分的纪录被移动到新页上,新记录适当的插入到新的或旧的页中。页拆分对系统的系能开销很大,如图所示:

      

      当新记录逻辑上位于索引结构的末尾时,将创建一个新页。但是只有新记录添加到新页中,如图所示:

    聚集索引中数据导航:

    3.  非聚集索引

      堆上的非聚集索引在各方面都与聚集索引的作用方式很类似。但是依然有一些不同,页级不是数据,而是到数据的指针。指针以索引所指向的特定行为的行标识符形成,它由区、页和行偏移量组成。非聚集索引数据导航过程如下所示:

      

    3.  聚集表上的非聚集索引

    一、    索引管理

    创建索引:

    Create  [unique] [Clustered] [Noclustered] index <索引名> On <表或视图名> (<列名> [ASC/DESC] [……n])

    删除索引:

    Drop Index <表或视图名>.<索引名>

     

     

  • 相关阅读:
    poj3686 Windys
    poj3155 Hard Life
    luoguP2774 方格取数问题
    poj3469 Dual Core CPU
    poj3281 Dining
    luogu P3410 拍照
    离散化
    最短路(SPFA)
    lower_bound && upper_bound
    gcd
  • 原文地址:https://www.cnblogs.com/PerfectSoft/p/2711057.html
Copyright © 2011-2022 走看看