相关疑难解决方法(0)

与代理整数键相比,自然键在 SQL Server 中提供的性能更高还是更低?

我是代理键的粉丝。我的发现存在确认偏倚的风险。

我在这里和http://stackoverflow.com 上看到的许多问题都使用自然键而不是基于IDENTITY()值的代理键。

我的计算机系统背景告诉我,对整数执行任何比较运算都比比较字符串快。

这个评论让我怀疑我的信念,所以我想我会创建一个系统来研究我的论点,即整数比字符串更快,用作 SQL Server 中的键。

由于小数据集可能几乎没有可辨别的差异,我立即想到了一个两表设置,其中主表有 1,000,000 行,而辅助表在主表中的每一行有 10 行,总共有 10,000,000 行。次要表。我的测试的前提是创建两组这样的表,一组使用自然键,一组使用整数键,并在简单的查询上运行计时测试,例如:

SELECT *
FROM Table1
    INNER JOIN Table2 ON Table1.Key = Table2.Key;
Run Code Online (Sandbox Code Playgroud)

以下是我作为测试台创建的代码:

USE Master;
IF (SELECT COUNT(database_id) FROM sys.databases d WHERE d.name = 'NaturalKeyTest') = 1
BEGIN
    ALTER DATABASE NaturalKeyTest SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE NaturalKeyTest;
END
GO
CREATE DATABASE NaturalKeyTest 
    ON (NAME = 'NaturalKeyTest', FILENAME = 
        'C:\SQLServer\Data\NaturalKeyTest.mdf', SIZE=8GB, FILEGROWTH=1GB) 
    LOG ON (NAME='NaturalKeyTestLog', FILENAME = 
        'C:\SQLServer\Logs\NaturalKeyTest.mdf', SIZE=256MB, FILEGROWTH=128MB); …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-server-2012 surrogate-key natural-key performance-testing

28
推荐指数
3
解决办法
4879
查看次数

Row_GUID 列的用途是什么?

我一直在 AdventureWorks2012 数据库中挖掘并看到在几个表中使用的 Row_GUID。

我的问题有两个部分:

何时应该包含 Row_GUID 列?

Row_GUID 列的用途和好处是什么?

sql-server uuid

23
推荐指数
2
解决办法
2万
查看次数