小编hea*_*ing的帖子

mysql:内连接需要 3 分钟

我在 SO for postgres 上有一个类似的问题 - 现在 mysql 也有同样的问题。

我有两张桌子——

表A:1MM行,AsOfDate,Id,BId(表B的外键)

表 B:50k 行、Id、Flag、ValidFrom、ValidTo

表 A 包含 2011/01/01 和 2011/12/31 之间每天跨 100 个 BId 的多条记录。表 B 包含 100 个投标的多个非重叠(在 validfrom 和 validto 之间)记录。

连接的任务是返回在给定 AsOfDate 上为 BId 激活的标志。

select 
    a.AsOfDate, b.Flag 
from 
    A a inner Join B b on 
        a.BId = b.Id and b.ValidFrom <= a.AsOfDate and b.ValidTo >= a.AsOfDate
where
    a.AsOfDate >= 20110101 and a.AsOfDate <= 20111231
Run Code Online (Sandbox Code Playgroud)

在具有 64Gb 内存的非常高端的服务器 (+3Ghz) 上,此查询需要 3 多分钟。

+-------+-------------------------+
| Table | Create …
Run Code Online (Sandbox Code Playgroud)

mysql performance

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

mysql ×1

performance ×1