postgresql - 使 Postgres 查询更快
问题描述
关于哪个查询会更快(或没有区别)的任何意见,为什么?
select * from A a left join B b on a.id = b.cid where b.cl1 = 's1' or b.c1 ='s2' or b.c1 ='s3' ;
或者
select * from A a left join B b on a.id = b.cid where b.cl1 in ('s1','s2','s3');
以上只是提供有关我正在尝试做什么的想法的示例。可能不是确切的语法。
问这个问题的原因是,我建立了一个类似于第一个的 spring-hibernate-JPA 查询,此时性能很差。因此,寻找所有可能的方法来提高性能。它可能是也可能不是查询。但不是数据库方面的专家,正在寻找信息
解决方案
在这种情况下,您可以使用PostgreSQL query analize简单地分析您的查询,看看哪个是速度。
更新:正如@MatBailie 在他的评论中所说,LEFT JOIN 需要一个 ON 子句。
EXPLAIN ANALYSE
SELECT *
FROM A a
LEFT JOIN B ON b
WHERE b.cl1 = 's1'
OR b.c2 = 's2'
OR b.c3 = 's3';
EXPLAIN ANALYSE
SELECT *
FROM A a
LEFT JOIN B ON b
WHERE b.cl1 IN ('s1', 's2', 's3');
推荐阅读
- php - PHP foreach循环中不同的网格大小
- c++ - 在 std::conditional 中使用模板来确定函数参数类型
- selenium - 如何在 Mac 上打包 chromedriver.exe
- gpu - pytorch 中的推理时间和 TFLOPS
- ios - 有什么方法可以在不使用文件的情况下将 MIDI 加载到 AKAppleSequencer 或 AKSequencer 中?
- c - 在特定函数中使用 printf 访问 C 中的链表时出现问题(访问内存问题)
- java - 我在将素数添加到数组列表时遇到了一些问题
- python - 如何解决 python gcse nea 项目音乐游戏中的元组问题
- python - 在 matplotlib for 循环中间遇到超时错误
- python - 连接列表和 for 循环