Aras中list表与value表的关系
-- LIST 与 VALUE 的关系
--1.查找“图册”
SELECT t.* FROM [innovator].[VALUE] t WHERE t.VALUE = '图册'
--2.查找DesignDoc1属性
SELECT t.* FROM [innovator].[LIST] t WHERE t.KEYED_NAME = 'DesignDoc1'
--3.VALUE表的SOURCE_ID字段为外键,引用LIST表的ID字段
SELECT v.*
FROM [innovator].[LIST] l
JOIN [innovator].[VALUE] v ON l.id = v.SOURCE_ID
WHERE l.KEYED_NAME = 'DesignDoc1'
-- Nested Loop介绍
-- 嵌套循环连接 是执行 JOIN 操作的一种常见方法。它使用嵌套循环来遍历两个表。对于 LIST 表中的每一行,它都会遍历 VALUE 表中的所有行,并检查两个表的连接条件是否满足。如果满足,则将两行的所有列返回。
-- 以下是嵌套循环连接的执行过程:
--1.从 LIST 表中读取第一行。
--2.遍历 VALUE 表中的所有行。
--3.比较 LIST 表中的 id 字段和 VALUE 表中的 SOURCE_ID 字段。
--4.如果两个字段相等,则将两行的所有列返回。
--5.重复步骤 1 到 4,直到遍历完 LIST 表中的所有行。
--嵌套循环连接是一种简单易懂的连接方法,但它也是一种效率低下的连接方法。因为对于 LIST 表中的每一行,它都会遍历 VALUE 表中的所有行,即使这些行不满足连接条件。
--提升性能:
--1.使用索引:在 LIST 表的 id 字段和 VALUE 表的 SOURCE_ID 字段上创建索引可以提高连接速度。
--2.使用较小的表作为驱动表:将较小的表作为驱动表可以减少嵌套循环的次数。 LIST表数据量在300左右,VALUE表的数据量在1000左右。所以使用LIST表作为驱动表
--3.使用其他连接方法:在某些情况下,可以使用其他连接方法,例如 哈希连接 或 合并连接,来提高性能。