当需要在文本列上连接两个表时怎么办?
What to do when two tables need to be joined on text columns?
我有两个 table,一个链接的 table 称为 AllData 和正常的 table 称为 MIUOffset。它们都有一个名为 MIUType 的文本列。我需要在 MIUType 上加入两个 tables,虽然 Inner Join MIUOffset on AllData.MIUType = MIUOffset.MIUType
的加入有效,但最终速度慢得无法忍受。
有没有什么方法可以在字符串字段上加入 tables 并让它在任何地方都能像在数字字段上加入一样快?
我的后备计划是修改其数据库中的链接 table 以具有一个整数字段作为 MIUType 数据的数字键,但如果可以避免,我宁愿不这样做.
我最终要做的是 add/subtract 列作为 where 语句的一部分,MIUOffset table 具有每个唯一 MIUType 的偏移量。结果方程类似于 AllData.[0] + MIUOffset.Offset < -95
。
那么除了在核心数据结构中添加一个等同于MIUType数据的数字键,或者重组代码循环遍历每个MIUType,最后将结果相加,有什么办法可以做到这一点?
我希望解决方案严格在 sql 中,但这一切都在 VBA 中完成,所以如果有人有任何建议,还有其他选择。
Is there any way to join tables on string fields and have it work anywhere near as quickly as joining on numeric fields?
你不知道。相反,您 规范化 您的 table。根据定义连接数字字段比连接字符串字段快得多。
MIUType
中的值在两列中重复了多少次?
My fallback plan is to modify the linked table in its database to have an integer field to act as a numeric key for the MIUType data, but I'd rather not do that if I can avoid it.
这不是 "fallback plan",它本来应该是正确的设计。我不确定您为什么要避免它。
创建一个单独的 table 来存储所有可能的值 一次,并将每个值映射到一个数字 ID(一个 autonumber 主键字段将执行 / identity
如果 linked 源在 SQL 服务器上)。
然后将 MIUTypeId
列添加到您的 table 中,并 运行 通过数字 ID 更新 link 值。然后删除多余的 MIUType
字符串列,从现在开始您加入 MIUTypeId
以获取关联的字符串值。如果这破坏了 20 个报告和 15 个视图,那么不要删除该列,而是修复 20 个报告和 15 个视图以使用新字段,然后当对字符串列的依赖项全部消失时,将其删除。
我有两个 table,一个链接的 table 称为 AllData 和正常的 table 称为 MIUOffset。它们都有一个名为 MIUType 的文本列。我需要在 MIUType 上加入两个 tables,虽然 Inner Join MIUOffset on AllData.MIUType = MIUOffset.MIUType
的加入有效,但最终速度慢得无法忍受。
有没有什么方法可以在字符串字段上加入 tables 并让它在任何地方都能像在数字字段上加入一样快?
我的后备计划是修改其数据库中的链接 table 以具有一个整数字段作为 MIUType 数据的数字键,但如果可以避免,我宁愿不这样做.
我最终要做的是 add/subtract 列作为 where 语句的一部分,MIUOffset table 具有每个唯一 MIUType 的偏移量。结果方程类似于 AllData.[0] + MIUOffset.Offset < -95
。
那么除了在核心数据结构中添加一个等同于MIUType数据的数字键,或者重组代码循环遍历每个MIUType,最后将结果相加,有什么办法可以做到这一点?
我希望解决方案严格在 sql 中,但这一切都在 VBA 中完成,所以如果有人有任何建议,还有其他选择。
Is there any way to join tables on string fields and have it work anywhere near as quickly as joining on numeric fields?
你不知道。相反,您 规范化 您的 table。根据定义连接数字字段比连接字符串字段快得多。
MIUType
中的值在两列中重复了多少次?
My fallback plan is to modify the linked table in its database to have an integer field to act as a numeric key for the MIUType data, but I'd rather not do that if I can avoid it.
这不是 "fallback plan",它本来应该是正确的设计。我不确定您为什么要避免它。
创建一个单独的 table 来存储所有可能的值 一次,并将每个值映射到一个数字 ID(一个 autonumber 主键字段将执行 / identity
如果 linked 源在 SQL 服务器上)。
然后将 MIUTypeId
列添加到您的 table 中,并 运行 通过数字 ID 更新 link 值。然后删除多余的 MIUType
字符串列,从现在开始您加入 MIUTypeId
以获取关联的字符串值。如果这破坏了 20 个报告和 15 个视图,那么不要删除该列,而是修复 20 个报告和 15 个视图以使用新字段,然后当对字符串列的依赖项全部消失时,将其删除。