首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在select中使用列作为(左([Another_Column],(4))而不是左行是个好主意吗?

在select中使用列作为(左([Another_Column],(4))而不是左行是个好主意吗?
EN

Database Administration用户
提问于 2019-03-28 12:48:59
回答 2查看 383关注 0票数 2

我偶然看到一张这样的桌子:

代码语言:javascript
复制
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中选择该字段不是更好吗?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2019-03-28 12:49:57

如果计算的列没有持久化或索引,那么它只是一个虚拟列(表达式),没有占用任何“空间”。

票数 8
EN

Database Administration用户

发布于 2019-03-28 19:40:01

我能想到拥有该列的唯一原因是索引它,因为在CD3中的前几个字符上有一些常见的读取查询集。

如果计算的列确实是索引的,那么它是有价值的,因为:

  • 它所需的存储空间将少于整个21个字符列。
  • 与整个21个char列上的索引相比,它将减少对查找和扫描的页面读取。

您提到的表很少被读取,但我将检查使用此计算列的索引以确保。

如果没有索引,请参阅关于非持久化计算列的存储方面的埃里克的回答

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/233382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档