在WHERE子句中使用GUID - 性能?

时间:2015-02-19 04:15:02

标签: sql-server sql-server-2008

在我们的应用程序中,我们根据一些计算在一个表中创建了很多行。由于行的数量,我们在.Net应用程序中使用BULK INSERT来快速写入行。

但是,我们需要知道在BULK INSERT调用中写入了哪些ID。因此,我们的想法是生成GUID,并将其添加到批量更新中写入的每一行。所以GUID会持久存在于表中。

如果我们需要查看写入的行,我们可以SELECT .. FROM TABLE ... WHERE SessionID =我们生成的guid。

我在表上有一个名为SessionID的列(例如),VARCHAR(50)NOT NULL,Indexed。

这是可接受的设计吗?

1 个答案:

答案 0 :(得分:3)

您应该创建类型为'uniqueidentifier'的列,该列用于存储GUID值。在内部,它将它存储为16字节(128位)整数,而不是您想要使用的慢得多的字符串。

性能应该非常好,因为您只是比较16个字节值来构建索引,这是一个非常快速的操作。