索引在表的插入/更新/删除上的开销如何?

时间:2018-08-30 10:14:53

标签: sql-server indexing

据说索引增加了表行的检索速度,但是它们在插入/更新/删除上是开销。我想知道索引如何成为索引体系结构的开销? This链接对我来说并不明确-我在群集索引和非群集索引之间感到困惑。

2 个答案:

答案 0 :(得分:1)

表上任何数据更改都会导致索引更改。例如,您要插入数据

没有索引的操作将是(大约)

1. insert data

使用索引操作将(大约)

1. insert data
2. update the index

因此,由于有索引,因此您可以看到还有其他操作(开销)。

答案 1 :(得分:0)

  

这个链接对我来说并不清晰-我在聚集索引和非聚集索引之间感到困惑。

所以,我愿意解释clusters and non-cluster indexes(根据我的理解),

匹配

  

表格:书

     

行:页面

     

行地址:页码

  

非集群索引=图书,而集群索引=乳制品

非集群索引说明

  • Book的内容写在流上。但它的主题以主题名称和关注页面编号的形式排在最后一页(额外页面)上。
  • 将插入实际的行。但是索引列在具有行地址的另一个内存空间上排序。
  • 如果读者想要特定主题,那么谁将在索引中搜索主题名称(排序列表)。
  • 如果搜索到特定行,那么将从索引中获取其行号。
  • 新主题已在上一个主题之后添加。然后索引需要按新主题排序。这是在索引上添加的页码。
  • 新行也添加为最后一行。然后,使用新值对索引重新排序,并将新行地址添加到索引中。

集群索引说明

  • 此处将页面和行作为排序顺序插入。
  • 如果要在日记上添加页面,则将页面索引为页面编号(根据日记的日期)。并插入关注的地方。
  • 如果在表上插入了行,则需要使用新索引列的值对表进行重新排序。
  • 在Dairy上,页面已排序。如表行排序。乳制品索引和簇索引表不需要单独的索引。

让我在Table的帮助下进行解释:

create table #nonCluster (i int, name varchar(10)) 

create table #Cluster (i int, name varchar(10)) 

CREATE NONCLUSTERED INDEX #nonCluster   
    ON #noncluster(i);          -- Here Non-Cluster Index

CREATE CLUSTERED INDEX #Cluster   
    ON #cluster(i);             -- Here Cluster Index

insert #nonCluster values(1,'one'),(9,'nine'),(5,'five')    -- Random data are inserted.
insert #Cluster values(1,'one'),(9,'nine'),(5,'five')       -- Random data are inserted.

select * from #nonCluster       -- Here we see the order of rows. That is un-order.
select * from #Cluster          -- Here we see the order of rows. That is order.

insert #nonCluster values(7,'seven')        -- Random data are inserted.
insert #Cluster values(7,'seven')           -- Random data are inserted.

select * from #nonCluster       -- Here we see the no change on order of rows. Rows are in how we were inserted.
select * from #Cluster          -- Here we see the sorted order of rows.

insert #nonCluster values(2,'two')
insert #Cluster values(2,'two')

select * from #nonCluster       -- Hence explained With help of order of rows.
select * from #Cluster          -- Hence explained With help of order of rows.