下面查询数据库的非聚集索引的所有记录数目,保留和使用空间:
USE DatabaseNameHere;
GO
-- Drop temporary table if exists
IF OBJECT_ID('tempDB.dbo.#IndexInfo') IS NOT NULL
DROP TABLE #IndexInfo ;
-- Create temporary table
CREATE TABLE #IndexInfo
(
ObjectName VARCHAR(250),
IndexName VARCHAR(250),
IndexID INT,
PartitionNumber INT,
[#Records] INT,
[Reserved(MB)] INT,
[Used(MB)] INT
);
-- Collect index info
INSERT INTO #IndexInfo
SELECT o.name AS ObjectName,
i.name AS IndexName,
i.index_id AS IndexID,
p.partition_number AS PartitionID,
p.[rows] AS [#Records],
a.total_pages * 8 / 1024 AS [Reserved(MB)],
a.used_pages * 8 / 1024 AS [Used(MB)]
FROM sys.indexes AS i
INNER JOIN sys.partitions AS p ON i.[object_id] = p.[object_id]
AND i.index_id = p.index_id
INNER JOIN sys.allocation_units AS a ON p.partition_id = a.container_id
INNER JOIN sys.sysobjects o ON i.[object_id] = o.id
WHERE i.name NOT LIKE 'sys%'
AND o.name NOT LIKE 'sys%'
AND i.[type] <> 1
ORDER BY a.total_pages DESC;
-- Return index info with TOTAL
SELECT ObjectName,
IndexName,
IndexID,
PartitionNumber,
[#Records],
[Reserved(MB)],
[Used(MB)]
FROM #IndexInfo
UNION ALL
SELECT 'TOTAL',
NULL,
NULL,
NULL,
NULL,
SUM(a.total_pages * 8 / 1024) AS [Reserved(mb)],
SUM(a.used_pages * 8 / 1024) AS [Used(mb)]
FROM sys.indexes AS i
INNER JOIN sys.partitions AS p ON i.[object_id] = p.[object_id]
AND i.index_id = p.index_id
INNER JOIN sys.allocation_units AS a ON p.partition_id = a.container_id
INNER JOIN sys.sysobjects o ON i.[object_id] = o.id
WHERE o.name NOT LIKE 'sys%'
AND i.[type] <> 1;
GO
分享到:
相关推荐
SQL Server 索引结构及其使用(聚集索引和非聚集索引)的区别与实例讲解,提高查询速度。
唯一非聚集索引留着, 再添加一个 非聚集索引,保留两个索引, 终于搞定了. CREATE UNIQUE NONCLUSTERED INDEX [IX_SF_CP_Detail_MAC2] ON [dbo].[SF_Cp_Detail] ( [Mac2] ASC ) WHERE ([MAC2]<>'' AND [MAC2] IS NOT...
聚集索引:物理存储按照索引排序非聚集索引:物理存储不按照索引排序优势与缺点聚集索引:插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入)查询数据比非聚集数据的速度快 ...
一、 创建主键(主键=主键索引=聚集索引) 主键是什么? 答:拿主键可以唯一确定一条数据,它和物理存储排序一致,不能为空,一个表只能有一个。 原本没有创建的主键的表在磁盘上存储为: Id=0;username=username0;sex...
聚集索引 一种索引,该索引中键值的...例如,如果应用程序执行 的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提
视图索引存储过程 事务显示事务 隐式事务 --索引 作用:提高查询效率 降低新增修改和删除的效率 --主键索引 唯一索引 聚集索引非聚集索引 --创建索引 --索引index 默认创建的是不唯一,非聚集索引
2.聚集索引,非聚集索引 3.测试中一些常看的指标和清除缓存的方法 4.主键与聚集索引 5.理解newid()和newsequentialid() 6.索引的代价,使用场景 7.Indexing for AND 8.数据基本格式补充 9.Indexing for OR 10.Joins ...
o非聚集索引:非聚集索引就是以非主键创建的索引,在叶子节点存储的是主键和索引列。 逻辑维度 o主键索引:一种特殊的唯一索引,不允许有空值。 o普通索引:MySQL中基本索引类型,允许空值和重复值。 o联合索引:多...
从2008开始,引入了一个增强非聚集索引的新功能——过滤索引(filter index),可以使用带有where条件的语句来创建非聚集索引,过滤掉不需要的数据,降低索引的维护开销和存储空间,提高查询性能。 准备工作...
非聚集索引的最低行包含非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数据行。数据行不按基于非聚集键的次序存储。如果一个表只有非聚集索引,它的数据行将按无序的堆集方式存储,非聚集索引可以建多个...
上一篇《浅析SQL Server 聚焦索引对非聚集索引的影响》我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解。...
一个表可以拥有多个非聚集索引,每个非聚集索引提供访问数据的不同排序顺序。 数据库系统概论chp3-2全文共66页,当前为第10页。 3.唯一索引唯一索引是指索引值必须是唯一的。聚集索引和非聚集索引均可用于强制表内...
文章目录数据库 索引1、概述2、索引的种类3、索引的底层实现原理3.1 索引的基础知识3.1 索引提高检索速度3.3 哈希索引4、聚集索引与非聚集索引4.1 聚集索引4.2 非聚集索引4.3 覆盖索引5、索引的最左分配原则6、总结 ...
海量数据查询优化 包括聚集 非聚集索引的区别等内容
这一节我们还是继续讲讲索引知识,前面我们聚集索引、非聚集索引以及覆盖索引等,在这其中还有一个过滤索引,通过索引过滤我们也能提高查询性能,简短的内容,深入的理解。 过滤索引,在查询条件上创建非聚集索引(1...
第15章 索引和查询优化 312 15.1 索引概述 312 15.1.1 聚集索引和非聚集索引 312 15.1.2 填充因子 312 15.1.3 使用目录视图查看索引 313 15.2 用CREATE INDEX语句创建索引 313 15.2.1 基本语法 ...
6 主键索引,辅助索引,聚集索引,非聚集索引 6.1 MyISAM存储引擎-主键索引 6.2 MyISAM存储引擎-辅助索引 6.3 InnoDB存储引擎-主键索引 6.4 InnoDB存储引擎-辅助索引 7 索引的相关问题 7.1 索引的设计原则 7.2 一次...
工作好几年了,也写过不少SQL,却浑然不知道索引为何物,只知道数据库有索引这么个东西,分不清聚集索引和非聚集索引,只知道查询慢了建个索引查询就快了,到头来索引也建了不少,查询也确实快了,偶然问之:汝建之...
3. 在视图view1中的“学号”列上创建一个非聚集索引。 3、根据表Student,SC,Course,运用连接操作实现以下查询功能; 查询每位学生的选课情况以及每门课的课程成绩; 查询每门课程的选课情况并且只显示选课人数多于...
在了解覆盖索引之前我们先大概了解一下什么是聚集索引(主键索引)和辅助索引(二级索引) 聚集索引(主键索引): 聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。 聚集索引的...