1

我在 SQL Server 2008 R2 中有一个表,它有一个主键Guid类型。经过几天的数据库测试,现在这个表有 7000 行。

我有一个查询,当数据约为 1000 条记录时有效,但现在无效。

查询是:

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

AlphaCode列的数据类型是nvarchar(1024).

上一个查询有时会在大约 10 秒内运行!但很多时候它失败了

超时异常

有趣的是,以下查询会在不到一秒的时间内返回记录:

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

这意味着 DBMS 引擎很容易找到我的记录,但问题在于更新操作。

4

1 回答 1

0

您永远不应该将 Guids 用于集群键。如果您了解聚集键的工作原理以及它如何在磁盘上排列数据,那么您就会意识到这些表上的更新和删除是多么昂贵。

在此处查看其他问题。

于 2013-03-17T15:20:35.900 回答