首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

快速找出無索引資料表:sysobjects + OBJECTPROPERTY 實戰查詢

     編輯:關於SqlServer

索引對效能的關鍵性

索引是 SQL Server 效能調校的核心。接手新環境或進行效能檢核時,首要任務之一即是識別缺乏索引的資料表,特別是資料量大、存取頻繁的表格。

系統表與函數搭配查詢邏輯

  • sysobjects:篩選使用者資料表(xtype = 'U'),取得物件 ID 與名稱。
  • OBJECTPROPERTY(id, 'TableHasIndex'):回傳 0 表示該表無任何索引。
  • sysindexes:配合 indid = 0 取得資料列數(heap 資料列數),作為優先序參考——資料列越多、存取越頻繁,建立索引效益越大。

查詢無索引資料表並按資料列數遞減排序

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

延伸應用:找出無叢集索引的表格

將 TableHasIndex 改為 TableHasClusteredIndex 即可查詢缺乏叢集索引的資料表,進一步評估是否需建立叢集索引以改善範圍查詢效能。

總結

此查詢可快速產出「無索引表格清單」,配合資料列數排序,協助 DBA 優先處理高效益索引建立工作,是資料庫效能基線檢核的必備工具腳本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved