数据库视图和查找表的区别

4
当我创建视图时,我可以基于来自不同表的多个列。当我想要创建一个查找表时,我需要从一个表中获取信息,例如订单表的外键,以从另一个表中获取客户详细信息。我可以创建具有参数的视图,以确保它将获取我所需的所有数据。根据我所读到的,我也可以创建一个查找表。在这种情况下,有什么区别,应该选择哪种方式?希望这不是一个坏问题,我还不太了解数据库。
5个回答

4
创建视图可以让您在查询时获得数据的“实时”表示。这样做的代价是服务器负载增加,因为它必须确定每个查询的值。这可能很昂贵,具体取决于表大小、数据库实现和视图定义的复杂性。
另一方面,查找表通常是“手动”填充的,即不会针对它的每个查询导致从多个表中获取值的昂贵操作。相反,您的程序必须负责更新查找表,如果底层数据发生更改。
通常,查找表适用于很少更改但经常读取的内容。而视图则更贵,但更具实时性。

那么在查找表中,您不会找到实时数据表示吗? 这个表是如何手动填充的?您是指每天运行类似于存储过程的东西来更新您的查找表,以使其保持最新状态吗? - Younes
根据您的问题,@Younes,关于视图与查找表,是的,查找表不会包含“实时”数据(必要时),您需要以某种方式维护表格数据(定期计划或随源信息更改)。 从某种意义上说,视图是一种动态查找表。 - Kenny Evitt

2
我认为你对“查找表”的使用有些错误。在正常的说法中,查找表是一种代码或参考数据表。它可能包含一个代码和一个描述或者一个代码扩展。这些表的目的是为受限制的列提供允许值的列表,例如CUSTOMER_TYPE或PRIORITY_CODE等。这类表通常被称为“静态数据”,因为它们很少甚至根本不会改变。定义此数据的价值在于可以将其用于外键和填充下拉列表和值列表。
你所描述的是稍微不同的情况:
“我需要从一个表中获取信息,例如订单表的外键,以获取另一个表中的客户详细信息。”
这两个表都是应用程序数据表。客户和订单记录是动态的。现在显然可以从客户表中检索额外的数据以与订单数据一起显示,并且在这个意义上客户是一个“查找表”。更重要的是,它是Order表的“父”表,因为它具有Order表上的外键引用的主键。
可以构建一个视图来捕获Order和Customer之间的连接逻辑。当构建在几个地方使用相同的连接表的应用程序时,这样的视图可能非常有用。

1
这是一个查找表的示例。我们有一个跟踪陪审员的系统,其中之一的表是JurorStatus。此表包含陪审员有效的所有状态码:
代码:值
WS:将服务
PP:推迟
EM:军事请假
IF:不合格罪犯
这是一个有效代码的查找表。
视图就像查询。

0

0
只需学会编写 SQL 查询,即可准确获取所需数据,无需创建视图!在许多情况下,视图并不是一个好的选择,特别是当你开始基于其他视图时,它们会降低性能。不要仅仅将视图用作查询编写的简写。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接