索引是提高sql server性能的關(guān)鍵。也許你已經(jīng)接手了一個(gè)新的sql server,它是其他部門(mén)的或者你的公司渴望提高當(dāng)前sql server性能的。無(wú)論怎么樣,我們要完成的首要任務(wù)之一是看那些沒(méi)有包含索引的表是否存在。
你打開(kāi)兩個(gè)系統(tǒng)表:sysindexes and sysobjects,查找這些信息。這系統(tǒng)表sysobjects是用來(lái)查找表對(duì)象和獲得表對(duì)象名的。sysobjects 表xtype列有一個(gè)’u’區(qū)別用戶(hù)表。sysobjects 表的id列是用來(lái)作為objectproperty()系統(tǒng)函數(shù)的參數(shù),去查找沒(méi)有索引的表的。第二個(gè)參數(shù)有tablehasindex的值。是個(gè)系統(tǒng)函數(shù)如果返回0,這表示表沒(méi)有索引存在。其他系統(tǒng)表,sysindexes 是用來(lái)取得表的行數(shù)的。sysindexes系統(tǒng)表有一個(gè)indid的列,當(dāng)indid的值為0時(shí),表示它他是表而不是索引。sysindexes表用來(lái)獲得表的行的每一列的值。表的行越多,表的訪問(wèn)頻率越高決定了為表加上索引提高性能的優(yōu)先權(quán)。
下面的查詢(xún)是用來(lái)查找沒(méi)有索引的表的:
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
通過(guò)使用同樣的查詢(xún),你可以用tablehasclusteredindex替代tablehasindex屬性來(lái)查找那些沒(méi)有索引簇的表。
新聞熱點(diǎn)
疑難解答
圖片精選