如果我们在数据库的表中定义了许多的计算列,我们可以利用目录视图sys.computed_columns来查询出数据库中所有的计算列及计算公式。
sql语句如下:
select * from sys.computed_columns
下面对该视图的几个重要列讲解一下:
1,object_id--该计算列的所属表的ID,可以结合object_name(object_id)来查询出所属表名,sql如下:
select object_name(object_id) as 所属表名,* from sys.computed_columns
2,name--该计算列的列名
3,definition--该计算列的公式(该列是非常有用的,利用该列的结果,可以大大提升我们管理计算列的效率)
4,is_persisted--指示该计算列是否是持久化的。
可能有些朋友会对is_persisted属性不太理解,什么是持久化的?持久化的计算列与非持久化的计算列有什么区别?
·持久化的计算列在每次用户更新数据是就计算好结果,并将该结果存储起来,就相当于一列实际存在的列。因为该列的结果都已经存储起来了,所以
可以在持久化的计算列上建立索引。
·非持久化的计算列只有在用户每次查询该字段的时候才计算出结果并返回,相对于持久化的计算列,它不占用存储空间。但
不可以在非持久化的计算上面建立索引,所以在读取的速度上稍逊一点。
建议:在有复杂公式的计算列,我们最好将该计算列设置为持久化的,这样会提升我们sql的查询速度。s