SQL Server - 查找基于特定数据类型构建的所有聚集索引的脚本

标签 sql sql-server tsql

我试图找到所有建立在数据类型 uniqueIdentifier 列上的聚集索引。显然,这对于聚集索引来说是一个糟糕的选择,我正试图找到所有这些并删除它们。到目前为止,我编写的脚本为每个具有 uniqueIdentifier 的表返回所有聚集索引。请帮忙。这是脚本:

select distinct object_name(i.object_id) AS tablename, i.name AS indexname, i.type_desc     as type 
from sys.indexes i
join sys.index_columns ic on ic.object_id = i.object_id and ic.index_id = i.index_id
join sys.columns c on c.column_id = ic.index_column_id 
join sys.types t on t.system_type_id = c.system_type_id
join sys.objects o on o.object_id = i.object_id
where t.name = 'uniqueidentifier'
and i.type_desc = 'clustered'
and object_name(i.object_id) not like 'sys%'

最佳答案

select o.name objectname, i.name indexname, c.name as columnname
from sys.objects o
join sys.indexes i on i.object_id = o.object_id
join sys.index_columns ic on ic.index_id = i.index_id and ic.object_id = i.object_id
join sys.columns c on c.object_id = o.object_id and c.column_id = ic.column_id
join sys.types t on c.system_type_id = t.system_type_id
where o.is_ms_shipped = 0
  and i.type_desc = 'CLUSTERED'
  and t.name = 'uniqueidentifier'
order by o.name, i.name

关于SQL Server - 查找基于特定数据类型构建的所有聚集索引的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390721/

相关文章:

mysql - SQL新手: How to compare all rows within a column to reflect how many rows are "cheaper/less than" the respective row?

sql-server - SQL Server 中的 PAGEIOLATCH_SH 等待类型是什么?

sql-server - SSIS:不同驱动程序的两个不同错误。一个是 32 位的,另一个是 64 位的。以 32 位运行导致另一个驱动程序失败

SQL View如何分组和求和

sql - SQL Server 中的 Oracle 样式日期

sql - 带 Hibernate 的组合框

mysql - SQL:最后一次出现的年份?

sql - 使用 charindex 和 ltrim

sql-server - 是否可以在现有存储过程中向查询添加行计数限制?

c# - SQL 查询错误 - "Column cannot be null"