sql - 使用 2 个键加速连接
问题描述
我可以以某种方式加快速度吗?
CREATE TABLE TEST AS
SELECT t1.Tech, t2.Coloar,t2.Car from Table1 t1
INNER JOIN Table2 t2 on (t1.ID = t2.ID AND t1.IT = t2.IT AND t1.LIFI = t2.LIFI) OR (t1.RA = t2.RA)
where...
如果我只用
(t1.ID = t2.ID AND t1.IT = t2.IT AND t1.LIFI = t2.LIFI)
或使用此键
(t1.RA = t2.RA)
这需要几秒钟,但都需要几分钟,我有更多更大的表要创建,有时我需要 LEFT JOIN 这个密钥对,比如
CREATE TABLE...
INNER JOIN...
LEFT JOIN on (t1.ID = t2.ID AND t1.IT = t2.IT AND t1.LIFI = t2.LIFI) OR (t1.RA = t2.RA)
解决方案
OR
从ON
子句中删除:
CREATE TABLE TEST AS
SELECT t1.Tech,
COALESCE(t2.Color, tt2.Color),
COLAESCE(t2.Car, tt2.Car)
FROM Table1 t1 LEFT JOIN
Table2 t2
ON t1.ID = t2.ID AND t1.IT = t2.IT AND t1.LIFI = t2.LIFI LEFT JOIN
Table2 tt2
ON t1.RA = tt2.RA AND t2.ID IS NULL
WHERE (t2.ID IS NOT NULL OR tt2.ID IS NOT NULL) AND
...
这应该能够为两个连接利用适当的索引。
推荐阅读
- excel - Excel公式用逗号从单元格中分隔数字
- python - 如何使用注意力机制对 RNN 建模以进行非文本分类?
- python - sqlalchemy-sqlite 数据库当前(01/2018)是否与 JSON 对象直接兼容?
- jquery - 如何在 JQUERY 中选择具有特定属性的 div 内的元素?
- javascript - 如何获取函数中父标签的属性值?
- mysql - MYSQL中带参数的存储过程
- html - 将材质 ui 表包裹在 div 内
- openshift - 如何停止现有的开放班次端口转发
- javascript - 禁用动态导入的 JS 文件缓存
- android - PackageParserException:包 ...base.apk 在 AndroidManifest.xml 入口处没有证书