1

タイプの主キーを持つ SQL Server 2008 R2 にテーブルがありますGuid。データベースを何日もテストした後、現在、このテーブルには 7000 行あります。

データが約 1000 レコードの場合に機能するクエリがありますが、現在は機能しません。

クエリは次のとおりです。

update Ticket 
set AlphaCode = "Hi" 
where TicketId = 'fe0b840d-5688-4f38-a1fe-46eb6ff04296'

AlphaCode列のデータ型は ですnvarchar(1024)

前のクエリは、約 10 秒で実行される場合があります。しかし、何度も失敗します

タイムアウト例外

興味深いことに、次のクエリは 1 秒もかからずにレコードを返します。

select * 
from Ticket 
where TicketId = 'fe0b840d-5688-4f38-a1fe-46eb6ff04296'

これは、DBMS エンジンが私のレコードを見つけるのに問題がないことを意味しますが、問題は更新操作の下にあります。

4

1 に答える 1

0

クラスター化されたキーに Guid を使用しないでください。クラスター化されたキーがどのように機能し、ディスク上でデータがどのように配置されるかがわかれば、それらのテーブルでの更新と削除がいかに高価であるかがわかります。

ここで他の質問を参照してください。

于 2013-03-17T15:20:35.900 に答える