表有一個主鍵聚集索引。 上表經常出現死鎖,導致數據丟失。 在插入行或更新行時哪個索引會很好地添加哪個具有更好的性能?在表中插入行/更新行時,哪個索引對性能有好處?
表: ID INT標識, ENTITYID中等, 實體名稱爲nvarchar(200), MeasuringID中等, Cratedon日期時間
主鍵集羣:ID
記錄被插入非常每次都在桌子上。
**的任何隔離級別或鎖被放置在插入和更新存儲的特效?
表有一個主鍵聚集索引。 上表經常出現死鎖,導致數據丟失。 在插入行或更新行時哪個索引會很好地添加哪個具有更好的性能?在表中插入行/更新行時,哪個索引對性能有好處?
表: ID INT標識, ENTITYID中等, 實體名稱爲nvarchar(200), MeasuringID中等, Cratedon日期時間
主鍵集羣:ID
記錄被插入非常每次都在桌子上。
**的任何隔離級別或鎖被放置在插入和更新存儲的特效?
這可能是相關的指標性能,尤其是當一個非常複雜的問題,而是調用的顧問,只問你的SQL服務器之前,不要只是一味地創建這些,他們只是給你的指示。 還要記住您的填充因子,這可能會有利地影響您的插入性能。 需要2008年及以上,並將生成脫機重建的代碼。在1K左右的影響表示關注需要
USE <YourDBName>
SELECT (avg_total_user_cost * avg_user_impact/100.0) * (user_scans +user_seeks) Impact
, [Table] = [statement]
, [CreateIndexStatement] = 'CREATE NONCLUSTERED INDEX IX_' + sys.objects.name COLLATE DATABASE_DEFAULT + '_'
+ REPLACE(REPLACE(REPLACE(ISNULL(mid.equality_columns,'')+ISNULL(mid.inequality_columns,''), '[', ''), ']',''), ', ','_') + ' ON ' + [statement]
+ REPLACE(' (' + IsNull(mid.equality_columns, '')
+ CASE WHEN mid.inequality_columns IS NULL THEN '' ELSE CASE WHEN mid.equality_columns IS NULL THEN '' ELSE ',' END + mid.inequality_columns END + ' ASC) ' ,',',' ASC ,') + CASE WHEN mid.included_columns IS NULL THEN '' ELSE 'INCLUDE (' + mid.included_columns + ')' END
+ 'WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, SORT_IN_TEMPDB = ON, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,FILLFACTOR = 90) ON [PRIMARY];'
, mid.equality_columns
, mid.inequality_columns
, mid.included_columns
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS mid ON mig.index_handle = mid.index_handle
INNER JOIN sys.objects WITH (nolock) ON mid.OBJECT_ID = sys.objects.OBJECT_ID
WHERE (migs.group_handle IN (SELECT TOP (500) group_handle FROM sys.dm_db_missing_index_group_stats WITH (nolock) ORDER BY (avg_total_user_cost * avg_user_impact) * (user_seeks + user_scans) DESC))
AND OBJECTPROPERTY(sys.objects.OBJECT_ID, 'isusertable') = 1
ORDER BY Impact DESC, [CreateIndexStatement] DESC ;
@Adrian .. 感謝您的QRY .. 添加在question..Pl更詳細的建議,如果任何... 在此先感謝 – SESHI
沒有索引。堆具有最好的INSERT性能。 「更新」是一個不同的球賽,一共 – Raj
你沒有顯示錶格。主鍵是複合鍵嗎?在一個聚集索引的數據存儲,以便在磁盤上,所以如果你有一個具有未保證是爲了新條目(例如電子郵件地址或身份證號碼),你可以期望看到插入性能差的主鍵。 – Andrew
不知道所有的細節,很難回答這樣的問題。請添加更多信息。 – Szymon