---
schema_version: "1"
id: f958e6a38a728fc79fe09010f27cfac14f760cbca2eee0e1421d445c9edd7edf
title: 假设存在联接的引用完整性
collection: tableau
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/current/zh-cn/pro/desktop/joins_assume_refinteg.md
canonical_url: https://help.tableau.com/current/pro/desktop/zh-cn/joins_assume_refinteg.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 079065dfd4bbd25852cd9b6f2af40e6e7739d922d0e69090b6dbf748ac329051
description: Improve join query performance by assuming referential integrity.
---
[跳转到主要内容](#main-content)

# 假设存在联接的引用完整性

有些情况下，您可以通过从“数据”菜单中选择“假设存在引用完整性”选项来改善联接的查询性能。如果使用此选项，Tableau 将仅在视图中的字段明确引用查询中的联接表时才包含该表。

![“数据”菜单，其中突出显示了假定参照完整性的选项。](/tableau/current/zh-cn/pro/desktop/zh-cn/Img/joins_assumerefinteg.png)

如果您知道数据具有引用完整性（请参见下面的定义）但数据库未强制或无法强制引用完整性，则适合于使用此设置。如果您可以选择在数据库中配置引用完整性，那么这是一个比使用此设置更好的选择，因为它可以同时提高数据库和 Tableau 的性能。Tableau 中的“假设存在引用完整性”选项只影响 Tableau 端的性能。如果您的数据没有引用完整性而您启用了此设置，则查询结果可能不可靠。

若要了解什么是引用完整性，请假设连接到包含两个表的销售数据：“销售额”和“产品目录”。这两个表如下所示：

<table><colgroup></colgroup><tbody><tr><td><p><b>销售额</b></p><table class="table--plain"><tbody><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">产品 ID（外键）</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">销售额</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">交易日期</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">1</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">100</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">2012 年 10 月 1 日</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">1</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">2000</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">2012 年 10 月 2 日</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">2</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">50</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">2012 年 9 月 30 日</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">3</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">10</td><td class="TableStyle-Basic-Border-BodyA-Column1-Body1">2012 年 8 月 21 日</td></tr></tbody></table></td><td><p><b>产品目录</b></p><table class="table--plain"><tbody><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">产品 ID（主键）</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">产品名称</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">1</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">10 英寸平板电脑</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">2</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">智能手机</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">3</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">台灯</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">4</td><td class="TableStyle-Basic-Border-BodyA-Column1-Body1">内存条</td></tr></tbody></table></td></tr></tbody></table>

由于销售的所有产品都必须在“产品目录”中列出，因此销售表中的每一行在“产品目录”表中都有一个对应的行。这两个表通过产品 ID 联接后，您会得到与下面类似的表：

<table class="table--plain"><tbody><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">产品 ID</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">产品名称</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">产品 ID</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">销售额</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">交易日期</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">1</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10 英寸平板电脑</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">1</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">100</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">2012 年 10 月 1 日</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">1</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">10 英寸平板电脑</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">1</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">2000</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">2012 年 10 月 2 日</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">2</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">智能手机</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">2</td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">50</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">2012 年 9 月 30 日</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">3</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">台灯</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">3</td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">10</td><td class="TableStyle-Basic-Border-BodyA-Column1-Body1">2012 年 8 月 21 日</td></tr></tbody></table>

现在，假设您构建了一个视图来按区域查看销售额。默认情况下，将“销售额”字段拖到视图中可创建如下所示的查询：

SELECT SUM(\[Sales Amount\]) FROM \[Sales\] S INNER JOIN \[Product Catalog\] P ON S.ProductID = P.ProductID

选择“假设存在引用完整性”即表示您告知 Tableau 联接的表具有引用完整性。换句话说，您确认“销售”表始终有一行与“产品目录”表相匹配。因为这是真的，因此 Tableau 不需要“产品目录”表中的任何信息来返回这些结果。将“销售额”字段拖到视图中后，Tableau 可将查询简化为：

SELECT SUM(\[Sales Amount\]) FROM \[Sales\]

此简化的查询通常可更快地返回结果，因为它省去了联接操作。此选项仅影响内部联接，不影响只包含一个表的数据源。