1

我需要在一张桌子上运行多个(很多!)选择(显然简化了):

libraries_books
---------------
id
library_id
book_id

我会在哪里寻找不同book_id的地方library_id

现在,我知道临时表:

SELECT id, book_id INTO TEMPORARY tmp_books where library_id=?

然后可以选择在其上添加索引tmp_books并在其上运行查询而不是 library_books,但我感觉还有另一种方法可以以更高性能的方式实现这一目标。在那儿?

4

1 回答 1

0

过早的优化是万恶之源。在 PostgreSQL 中,你不会出错:

  1. 规范化您的数据
  2. 将索引应用于所需的少数表
  3. 根据需要调整索引

一般来说,PostgreSQL 有很多技巧可以让你的用例快速。您不仅在数据库中有缓存,而且如果它们都必须进行顺序扫描,您还可以对同一个表进行选择并行工作(这意味着第二个查询可以获得第一个查询的捎带的好处)扫描)。

如果您最终得到大量记录,请考虑部分索引或其他策略。

于 2013-11-16T10:54:03.560 回答