标签: clustered-index

群集和非群集索引实际上意味着什么?

我对DB的了解有限,并且只使用DB作为应用程序员.我想知道ClusteredNon clustered indexes.我用谷歌搜索,发现的是:

聚簇索引是一种特殊类型的索引,它重新排序表中记录的物理存储方式.因此,表只能有一个聚簇索引.聚簇索引的叶节点包含数据页.非聚簇索引是一种特殊类型的索引,其中索引的逻辑顺序与磁盘上行的物理存储顺序不匹配.非聚簇索引的叶节点不包含数据页.相反,叶节点包含索引行.

我在SO中发现的是聚簇索引和非聚簇索引之间有什么区别?.

有人可以用简单的英语解释这个吗?

sql-server indexing performance clustered-index non-clustered-index

1041
推荐指数
10
解决办法
74万
查看次数

270
推荐指数
10
解决办法
27万
查看次数

聚簇索引和非聚簇索引之间的区别

我需要添加适当的index表格,需要一些帮助.

我很困惑,需要澄清几点:

  • 我应该为non-int列使用索引吗?为什么/为什么不呢

  • 我已经读了很多关于clusterednon-clustered指数但我仍然不能确定何时使用一个比其他.一个很好的例子可以帮助我和许多其他开发人员.

我知道我不应该为经常更新的列或表使用索引.我还应该注意什么呢?在进入测试阶段之前我怎么知道这一切都很好?

sql-server indexing database-design clustered-index non-clustered-index

126
推荐指数
4
解决办法
28万
查看次数

SQL Server - 何时使用Clustered与非Clustered Index?

我知道集群索引和非集群索引之间的主要区别,并了解它们的实际工作方式.我理解群集和非群集索引如何提高读取性能.但有一件事我不确定是什么原因让我选择一个而不是另一个.

例如:如果一个表没有聚集索引,那么应该创建一个非聚集索引并且有什么好处呢?

sql-server indexing clustered-index query-tuning non-clustered-index

98
推荐指数
1
解决办法
10万
查看次数

聚集索引必须是唯一的吗?

如果聚簇索引不是唯一的,会发生什么?是否会导致性能不佳,因为插入的行会流向某些类型的"溢出"页面?

它是"独特的",如果是这样的话怎么样?使它独一无二的最佳方法是什么?

我问,因为我目前正在使用聚集索引来划分逻辑部分中的表,但性能是如此,最近我得到使我的聚簇索引唯一的建议.我想就此发表第二个意见.

谢谢!

sql t-sql database clustered-index sql-server-2008

76
推荐指数
3
解决办法
6万
查看次数

如何判断是否正在访问数据库表?想要像"SELECT触发器"这样的东西

我有一个包含数百个表的非常大的数据库,经过许多产品升级后,我确信其中一半不再使用了.如何判断是否正在从中选择一个表?我不能只使用Profiler - 我不仅要观看超过几天,而且还有数千个存储过程,并且探查器不会将SP调用转换为表访问调用.

我唯一能想到的是在感兴趣的表上创建聚簇索引,然后监视sys.dm_db_index_usage_stats聚类索引是否有任何搜索或扫描,这意味着表中的数据已加载.但是,在每个表上添加聚簇索引是一个坏主意(由于许多原因),因为这是不可行的.

我还有其他选择吗?我一直想要一个像"SELECT触发器"这样的功能,但是可能还有其他原因导致SQL Server没有这个功能.

解:

谢谢,Remus,指出我正确的方向.使用这些列,我创建了以下SELECT,它完全符合我的要求.

  WITH LastActivity (ObjectID, LastAction) AS 
  (
       SELECT object_id AS TableName,
              last_user_seek as LastAction
         FROM sys.dm_db_index_usage_stats u
        WHERE database_id = db_id(db_name())
        UNION 
       SELECT object_id AS TableName,
              last_user_scan as LastAction
         FROM sys.dm_db_index_usage_stats u
        WHERE database_id = db_id(db_name())
        UNION
       SELECT object_id AS TableName,
              last_user_lookup as LastAction
         FROM sys.dm_db_index_usage_stats u
        WHERE database_id = db_id(db_name())
  )
  SELECT OBJECT_NAME(so.object_id) AS TableName,
         MAX(la.LastAction) as LastSelect
    FROM sys.objects so
    LEFT
    JOIN LastActivity la
      on so.object_id = la.ObjectID
   WHERE …
Run Code Online (Sandbox Code Playgroud)

sql-server database-design clustered-index sql-server-2008

58
推荐指数
2
解决办法
6万
查看次数

关于postgres中的聚簇索引

我正在使用psql访问postgres数据库.查看表的元数据时,有没有办法查看表的索引是否为聚簇索引?

我听说表的PRIMARY KEY自动与聚簇索引相关联,是真的吗?

postgresql clustered-index

38
推荐指数
6
解决办法
4万
查看次数

database:主键,Clustered或NonClustered

我在SQL server 2008中创建一个数据库,

CREATE TABLE Users
(
    U_Id INT NOT NULL
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    Email VARCHAR(200)
    Password VARCHAR(50)
)
Run Code Online (Sandbox Code Playgroud)

我想让U_Id成为主键.我想问一下有什么区别

 CONSTRAINT pk_UserID PRIMARY KEY (U_Id)
Run Code Online (Sandbox Code Playgroud)

这个

 CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)
Run Code Online (Sandbox Code Playgroud)

还有这个

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)
Run Code Online (Sandbox Code Playgroud)

什么时候使用?

我读了一些文章,但我还不清楚.有人可以给我一个快速解释吗?

database primary-key clustered-index sql-server-2008

35
推荐指数
1
解决办法
4万
查看次数

我应该摆脱Guid列上的聚簇索引

我正在研究一个通常使用GUID作为主键的数据库.

默认情况下,SQL Server在主键列上放置聚簇索引.我理解这对于GUID列来说是一个愚蠢的想法,并且非聚集索引更好.

你怎么想 - 我应该摆脱所有聚集索引并用非聚集索引替换它们吗?

为什么SQL的性能调优器不会提供此建议?

sql-server guid clustered-index

33
推荐指数
4
解决办法
2万
查看次数

如何将主键更改为非群集?

兼职不情愿的DBA在这里.我想将现有的主键索引从群集更改为非群集.而语法正在逃避我.

这就是它现在的编写方式.

ALTER TABLE [dbo].[Config] WITH NOCHECK ADD 
    CONSTRAINT [PK_Config] PRIMARY KEY  CLUSTERED 
    (
        [ConfigID]
    )  ON [PRIMARY] 
Run Code Online (Sandbox Code Playgroud)

我没有在在线文档中看到ALTER CONSTRAINT语句.

sql sql-server-2005 alter clustered-index

30
推荐指数
1
解决办法
3万
查看次数