我有表格章节,其中每一章都有它的唯一ID和订单号:
章:
id | name | book_id | order
1 | First | 1 | 1
2 | Second | 1 | 2
3 | First | 2 | 1
4 | Second | 2 | 2
我选择这个查询:
SELECT * FROM chapters where book_id=1 ORDER BY order
我是否需要在订单列上创建普通索引,或者应该以某种方式为每本书分离此索引,因为如果我为 1000 本书选择 1 章,我就不需要另一本书的索引。
或者也许有一种使一本书章节改变顺序的打击方法?
您可以尝试将以下索引添加到表中:
CREATE INDEX idx ON chapters (book_id, "order");
这应该使 Postgres 可以轻松查找具有特定book_id
值的记录,然后按order
列对结果集进行排序。
请注意,ORDER
是一个保留的 SQL 关键字,因此您可能应该避免使用它来命名列和表。