1

我得到了一大堆杂乱无章的数据来分析,现在我陷入了困境。我有一个 ~200 万行表,其非唯一标识符为 datatype varchar(50)。此标识符对 a 是唯一的personID。在我弄清楚我需要如何规范化这个垃圾之前,我现在有另一个问题可能对我有帮助:如果我将数据类型更改varchar(25)为例如,这将有助于查询在非连接时运行得更快PK场?字符串中的所有字符都是整数,但尝试将它们转换为 int 会导致溢出。或者我可以暂时以某种方式索引该列以使某些查询运行得更快吗?

编辑:这personID将是另一个表的外键,其中包含一个人的人口统计信息。

4

2 回答 2

2

从技术上讲,varchar 的长度指定了它的最大长度。

实际长度是可变的(因此是名称),因此较低的最大值不会改变评估,因为它将在实际字符串上进行。

了解更多信息 :

检查此 MSDN 文章 和此 Stack overflow 帖子

于 2012-10-24T15:24:16.613 回答
0

Varchar(50)tovarchar(25)肯定会减少该表中记录的大小,从而减少包含该表的数据库页数,提高查询的性能(可能在一定程度上),但是这样的 ALTER TABLE 语句可能需要很长时间。

或者,如果您在连接列上定义索引,并且如果您的检索列表很小,您也可以在索引定义中包含这些列(覆盖索引),这也会显着降低查询执行时间。

于 2012-10-24T15:23:23.953 回答