程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 查找沒有索引的表

查找沒有索引的表

編輯:關於SqlServer

索引是提高SQL Server性能的關鍵。也許你已經接手了一個新的SQL Server,它是其他部門的或者你的公司渴望提高當前SQL Server性能的。無論怎麼樣,我們要完成的首要任務之一是看那些沒有包含索引的表是否存在。

你打開兩個系統表:sysindexes and sysobjects,查找這些信息。這系統表sysobjects是用來查找表對象和獲得表對象名的。sysobjects 表Xtype列有一個’U’區別用戶表。sysobjects 表的Id列是用來作為OBJECTPROPERTY()系統函數的參數,去查找沒有索引的表的。第二個參數有TableHasIndex的值。是個系統函數如果返回0,這表示表沒有索引存在。其他系統表,sysindexes 是用來取得表的行數的。Sysindexes系統表有一個indid的列,當indid的值為0時,表示它他是表而不是索引。Sysindexes表用來獲得表的行的每一列的值。表的行越多,表的訪問頻率越高決定了為表加上索引提高性能的優先權。

下面的查詢是用來查找沒有索引的表的:

SELECT (SELECT si.rows
FROM sysindexes si
WHERE si.id = so.id and indid = 0) rows
, so.name
FROM sysobjects so
WHERE so.xtype = 'U'
AND OBJECTPROPERTY(so.id , 'TableHasIndex' ) = 0
ORDER BY 1 DESC

通過使用同樣的查詢,你可以用TableHasClusteredIndex替代TableHasIndex屬性來查找那些沒有索引簇的表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved