数据库Join算法如何将万亿级比较降至线性复杂度:从嵌套循环到哈希连接的四十年技术博弈
1970年,Edgar Codd在IBM发表关系模型论文时,可能没有预见到Join操作会成为此后五十年数据库性能优化的核心战场。一个看似简单的"将两张表按共同键合并"的操作,在算法层面却隐藏着从$O(m \times n)$到$O(m + n)$的巨大差异——对于两张各有100万行的表,这意味着从万亿次比较降到百万次,性能差距可达六个数量级。 ...
1970年,Edgar Codd在IBM发表关系模型论文时,可能没有预见到Join操作会成为此后五十年数据库性能优化的核心战场。一个看似简单的"将两张表按共同键合并"的操作,在算法层面却隐藏着从$O(m \times n)$到$O(m + n)$的巨大差异——对于两张各有100万行的表,这意味着从万亿次比较降到百万次,性能差距可达六个数量级。 ...
一个开发者盯着慢查询日志,发现一条耗时3秒的SELECT语句。他熟练地添加了一个索引,查询时间降到50毫秒。第二天,他又用同样的方法解决了另一个慢查询。一个月后,这张表已经积累了12个索引。 ...
2015年,慕尼黑工业大学的研究团队做了一个实验:他们把PostgreSQL查询优化器的基数估计值全部替换成真实值,然后观察113个复杂查询的执行时间变化。 ...