gpt4 book ai didi

sql - 在存储过程中使用 View 而不是表?

转载 作者:太空狗 更新时间:2023-10-30 01:59:51 25 4
gpt4 key购买 nike

查询 View 而不是存储过程中的原始表是一个好习惯吗? (即使 View 没有提供任何不同的数据)

我一直认为这可能是个好主意,因为它是一个额外的抽象层,并且类似于在类函数中使用属性而不是成员变量。

但现在我正在查看由 ASP.NET Membership Provider 创建的存储过程,它们总是直接查询表。

我知道使用 View 不能方便地插入数据,但是如果存储过程只是查询数据,你还应该直接使用表吗?如果是,主要原因是什么? (性能?)

最佳答案

View 只是一个扩展为外部查询的宏。

如果您的 View 包含多个连接,那么当您连接到其他 View 时,当您在存储过程的 SQL 中实际看到 3 个 JOIN 时,您突然有了 20 或 30 种 JOIN 方式。您还会发现每个查询都是不同的:为什么要为每个查询连接相同的 20 或 30 个表?

通常,除非 View 被索引/物化并且优化器可以使用它,否则没有任何好处。

诸如在被 View 屏蔽的单个表上进行计算的想法应该在计算列中:为什么要继续计算它?对于 View 中多个表的计算,应该对其进行索引。

使用存储过程意味着没有基表访问(所有权链)。

View 有很好的用途,可以避免用户直接访问表,或屏蔽模式更改,或提供一些基本的安全性(例如基于 SUSER_SNAME),但不是为了性能或理念

关于sql - 在存储过程中使用 View 而不是表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4907711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com