首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQL事实表中索引连接的外键字段?

在SQL事实表中索引连接的外键字段?
EN

Stack Overflow用户
提问于 2020-03-13 18:47:02
回答 1查看 76关注 0票数 0

我有一个大的事实表(50m行),它由5个外键和5个值列组成。

我已经创建了5个维度表,并在事实表中索引了外键。到目前为止,性能非常好,使用任何维度查询事实表都非常快速。

需求略有变化(表用于报告),现在用户希望能够使用连接字段查询表,该字段由两个合并的维度字段组成。

以下是一个示例:

代码语言:javascript
运行
复制
Dim1
Dim1key
Dim1Desc

Dim2
Dim2key
Dim2Desc

Fact_Data
Dim1key
Dim2key
Values1
values2
Values3

如果我使用dim1key = 5dim2key = 10查询表,它非常快,但现在我希望使用合并的dim1 & dim2键查询表,例如mergedkey = "5-10"。我尝试使用concat_WS('-',Dim1key,Dim2key) = "5-10"查询表,但是它非常慢,显然没有利用任何索引。

对我来说最好的行动是什么?是否应该使用上述concat_ws函数向事实表中添加一个合并列,然后创建一个包含合并字段的新维度表,然后在事实表中对新创建的合并列进行索引?

...or,我是不是把事情复杂化了?只想检查一下,因为索引非常耗时(目前使用的是天青S1免费试用DTU )。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 18:52:01

这是一个可笑的要求。很多人使用许多高维事实表,而不必将键作为字符串连接。

但是,如果您被迫这样做,您可以向事实表中添加一个计算列,将其持久化,并构建一个索引:

代码语言:javascript
运行
复制
alter table fact add merged_key as (concat_ws('-', Dim1key, Dim2key)) persisted;

create index idx_fact_merge on fact(merged_key);

您可以将表查询为:

代码语言:javascript
运行
复制
where merged_key = '5-10'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60675775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档