You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化PostgreSQL查询,获取指定作者的目标书籍

最优实现方案

核心思路:合并查询逻辑到单次数据库调用

你已经尝试了合并查询的方式,还可以进一步优化SQL的可读性与性能,推荐以下几种更高效的写法,同时配合索引强化查询速度。

写法1:JOIN关联(推荐,可读性更强)

SELECT b.*
FROM books b
JOIN authorBookRelations abr ON b.id = abr.book_id
WHERE abr.author_id = 5
  AND b.title IN ('arbitraryTitle_1', 'arbitraryTitle_2');

写法2:简化版子查询(比你当前的嵌套写法更简洁)

SELECT *
FROM books
WHERE id IN (
    SELECT book_id
    FROM authorBookRelations
    WHERE author_id = 5
)
AND title IN ('arbitraryTitle_1', 'arbitraryTitle_2');

性能优化:添加针对性索引

数据量较大时,索引能避免全表扫描,大幅提升查询速度,建议创建以下索引:

  • 给authorBookRelations表创建author_id+book_id的联合索引:
    CREATE INDEX idx_abr_author_book ON authorBookRelations(author_id, book_id);
    
  • 给books表创建title+id的联合索引:
    CREATE INDEX idx_books_title_id ON books(title, id);
    

方案优势

  1. 减少应用层与数据库的交互次数,省去两次查询+Python过滤的额外开销
  2. 数据库查询优化器能更好地处理JOIN/子查询逻辑,效率远高于应用层过滤
  3. 代码更简洁易维护,后续调整查询条件只需修改SQL即可

内容的提问来源于stack exchange,提问作者Jacob Dallas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:54:14