SQL Server中虚列是指一个结构虚拟的、不占空间的列,它可以用于根据其他现有列计算数据,从而提高查询的精准度。由于虚列不占用空间,且不需要存储任何数据,因此查询处理也会比使用现有列更快速。 虚列是sql server中一种很强大的工具,它能够帮助用户更有效地利用数据库中拥有的资源,提供精准有效的查询结果。
一般情况下,建立虚列要分两步,首先定义虚列,然后提供虚列的实现。此外,对于虚列的参数校验也很重要的,这将有助于准确地检索出有益的数据。下面是一个示例,在此虚列尝试以查询的方式实现以下功能:
SELECT
c1.contact_name,
c2.customer_name,
c1.contact_name AS [Contact Name],
c2.customer_name AS [Customer Name],
balance
FROM
contact AS c1
INNER JOIN
customer AS c2
ON c1.contact_id = c2.customer_id
WHERE
balance > 0
ORDER BY
c2.customer_name;
下面是这个虚列实现的SQL语句:
SELECT
c1.contact_name,
c2.customer_name,
c1.contact_name AS [Contact Name],
c2.customer_name AS [Customer Name],
SUM(payments.amount) OVER(PARTITION BY payments.contact_id) – SUM(invoices.amount) OVER(PARTITION BY invoices.contact_id) AS [balance]
FROM
contact c1
INNER JOIN
customer c2
ON c1.contact_id = c2.customer_id
INNER JOIN
payments
ON payments.contact_id = c1.contact_id
INNER JOIN
invoices
ON invoices.contact_id = c1.contact_id
WHERE
balance > 0
ORDER BY
c2.customer_name;
从上面可以看出,通过使用SQL Server虚列,可以很容易地实现查询balance字段,而且运行速度更快,实现更准确。
总结:SQL Server虚列是一种很强大的技术,最重要的是,它可以帮助用户根据现有列定高精度,用来计算新列,有助于缩短查询语句的执行时长和提高查询的精准度,从而达到平衡的效果。