我偶然看到一张这样的桌子:
CREATE TABLE TABLE1
(
CD1 int
,CD2 varchar(16)
,CD3 varchar(21)
,CD4 decimal(14,0)
,CD5 varchar(4)
,CD6 decimal(18,2)
,CD7 AS (left([CD3],(4)))
)这个表有超过40亿行(完全没有必要,但这是另一个主题)。
正如您在上一篇专栏中所看到的,它们使用AS (left([CD3],(4)))。我认为这是非常无用的,因为我们在这张桌子上几乎没有选择,这里只是使用空间。
在需要时,在select中选择该字段不是更好吗?
发布于 2019-03-28 12:49:57
如果计算的列没有持久化或索引,那么它只是一个虚拟列(表达式),没有占用任何“空间”。
发布于 2019-03-28 19:40:01
我能想到拥有该列的唯一原因是索引它,因为在CD3中的前几个字符上有一些常见的读取查询集。
如果计算的列确实是索引的,那么它是有价值的,因为:
您提到的表很少被读取,但我将检查使用此计算列的索引以确保。
如果没有索引,请参阅关于非持久化计算列的存储方面的埃里克的回答。
https://dba.stackexchange.com/questions/233382
复制相似问题