sqlserver2008R2中查找未使用过的索引
- 格式:pdf
- 大小:161.88 KB
- 文档页数:1


在SQL Server中,要查询数据库文件的信息,可以使用以下几种方法:1. 使用系统视图`sys.database_files`:```sqlSELECT * FROM sys.database_files;```这个视图包含了所有数据库文件的详细信息,包括文件名、文件类型、大小等。
2. 使用系统视图`sys.master_files`:```sqlSELECT * FROM sys.master_files;```这个视图也包含了数据库文件的信息,并且对于每个数据库,只有一个记录。
3. 使用`DBCC CHECKDB`命令:```sqlDBCC CHECKDB ('数据库名') WITH NO_INFOMSGS, ALL_ERRORMSGS;```这个命令不仅可以检查数据库的完整性,还可以获取数据库文件的信息。
4. 使用`系统表`:在SQL Server的早期版本中,可以通过查询系统表来获取数据库文件信息,例如`msdb..sysfiles`。
但是,在SQL Server 2005及以后的版本中,推荐使用系统视图。
5. 使用`SELECT`语句查询`INFORMATION_SCHEMA.TABLES`和`INFORMATION_SCHEMA.COLUMNS`:```sqlSELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'Base Table';SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '表名';```这些查询可以获取数据库中表的基本信息和列的信息,但不会直接提供文件信息。
查询数据库文件信息时,需要具有足够的权限,通常是数据库的`sysadmin`角色或相应的权限。
sql server 索引碎片查询语句在SQL Server中,可以使用以下查询语句来查询索引碎片信息:```sqlDECLARE @table_id INTSET @table_id = OBJECT_ID('表名')DBCC SHOWCONTIG(@table_id)```其中,`DBCC SHOWCONTIG`命令可以返回以下碎片信息:- Pages Scanned:扫描页数。
如果知道行的近似尺寸和表或索引里的行数,那么可以估计出索引里的页数。
如果扫描页数明显比估计的页数要高,说明存在内部碎片。
- Extents Scanned:扫描区数。
用扫描页数除以8,四舍五入到下一个最高值。
该值应该和`DBCC SHOWCONTIG`返回的扫描区数一致。
如果`DBCC SHOWCONTIG`返回的数高,说明存在外部碎片。
- Extent Switches:区切换次数。
该数应该等于扫描区数减1。
如果该值较高,说明有外部碎片。
- Avg.Pages per Extent:每个区的平均页数。
该数是扫描页数除以扫描区数,一般是8。
如果小于8,说明有外部碎片。
- Scan Density (Best Count:Actual Count):扫描密度(最佳计数:实际计数)。
`DBCC SHOWCONTIG`返回扩展盘区的最佳值和实际值的比率。
该百分比应该尽可能靠近100%。
如果该值较低,说明有外部碎片。
- Logical Scan Fragmentation:逻辑扫描碎片,即无序页的百分比。
该百分比应该在0%到10%之间,如果较高,说明有外部碎片。
- Extent Scan Fragmentation:区扫描碎片,即无序扩展盘区在扫描索引叶级页中所占的百分比。
该百分比应该是0%,如果较高,说明有外部碎片。
- Avg.Bytes Free per Page:每页的平均可用字节数。
所扫描的页上的平均可用字节数。
SQLServer索引——的创建、删除、何时使⽤、索引查询语句1.使⽤CREATE 语句创建索引CREATE INDEX index_name ON table_name(column_name,column_name) include(score) ---普通索引CREATE UNIQUE INDEX index_name ON table_name (column_name) ;---⾮空索引CREATE PRIMARY KEY INDEX index_name ON table_name (column_name) ;---主键索引使⽤ALTER TABLE语句创建索引alter table table_name add index index_name (column_list) ;alter table table_name add unique (column_list) ;alter table table_name add primary key (column_list) ;2.删除索引drop index index_name on table_name ;alter table table_name drop index index_name ;alter table table_name drop primary key ;3.当需要快速找出在某个列中有⼀特定值的⾏例如:有⼀张person表,其中有2W条记录,记录着2W个⼈的信息。
有⼀个Phone的字段记录每个⼈的电话号码,现在想要查询出电话号码为xxxx的⼈的信息。
如果没有索引,那么将从表中第⼀条记录⼀条条往下遍历,直到找到该条信息为;如果有了索引,那么会将该Phone字段,通过⼀定的⽅法进⾏存储,好让查询该字段上的信息时,能够快速找到对应的数据,⽽不必在遍历2W条数据了。
4.索引查询SQL Server数据库索引信息查询--sql server查看表中已存在的索引exec sp_helpindex 表名-- 查看某個表的索引SELECT * FROM sys.sysindexesWHERE id=object_id('RelactionGraph')-- 查看整個庫的索引SELECT * FROM sys.sysindexes-- 查看所有庫的索引IF object_id('tempdb..#')IS NOT NULLDROP TABLE #SELECT * INTO # FROM sys.sysindexes WHERE 1=2INSERT INTO #EXEC sys.sp_MSforeachdb @command1='Select * from ?.sys.sysindexes'SELECT * FROM #Oracle数据库索引信息查询oracle对于数据库中的表信息,存储在系统表中。
sql server查看及创建缺失索引的方法-回复标题:SQL Server查看及创建缺失索引的方法在数据库管理中,索引是一个至关重要的组成部分。
它们能够显著提升数据查询的效率,尤其是在处理大量数据时。
然而,如何在SQL Server 中查看和创建缺失的索引可能对一些用户来说是一个挑战。
以下是一步一步的详细指南。
一、查看现有索引首先,我们需要查看数据库中已经存在的索引。
以下是如何在SQL Server中实现这一操作的步骤:1. 打开SQL Server Management Studio(SSMS)并连接到你的数据库。
2. 在对象资源管理器中,展开你的数据库,然后选择“表”。
3. 右键点击你想要查看索引的表,然后选择“设计”。
4. 在设计视图中,你会看到一个名为“索引”的选项卡。
在这里,你可以查看该表的所有现有索引。
二、识别缺失的索引识别缺失的索引通常需要对查询性能进行分析和优化。
以下是一些常见的方法:1. 使用SQL Server的内置工具:SQL Server提供了诸如“数据库引擎tuning advisor”和“动态管理视图”等工具,可以帮助你识别可能需要索引的查询。
- 数据库引擎tuning advisor:运行这个工具,选择你的数据库和工作负载(例如,一个包含典型查询的脚本),然后让它分析并提出建议。
这些建议可能包括创建新的索引。
- 动态管理视图:特别是sys.dm_db_missing_index_details视图,它可以提供关于缺失索引的信息,包括表名、列和预期的收益。
2. 手动分析查询执行计划:通过查看查询执行计划,你可以了解SQL Server如何处理你的查询。
如果看到大量的表扫描或排序操作,那么可能就需要考虑为相关的列创建索引。
三、创建缺失的索引一旦确定了需要创建的索引,以下是在SQL Server中创建新索引的步骤:1. 在SSMS中,打开一个新的查询窗口。
2. 输入以下SQL语句来创建一个新的非聚集索引(假设我们正在为名为"Employees"的表的"LastName"列创建索引):sqlCREATE NONCLUSTERED INDEX idx_LastName ON Employees (LastName);在这个例子中,“idx_LastName”是索引的名称,“Employees”是表的名称,“LastName”是我们要为其创建索引的列。