我有表格章节,每个章节都有唯一的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章,那么我就不需要另一本书的索引。
或者也许有一种连击方式使一本书的章节可以更改顺序?
答案 0 :(得分:2)
您可以尝试在表中添加以下索引:
CREATE INDEX idx ON chapters (book_id, "order");
这应该使Postgres轻松查找具有某个book_id
值的记录,然后按order
列对结果集进行排序。
请注意,ORDER
是保留的SQL关键字,因此您应该避免使用它来命名列和表。