如果在 rails 中有复合索引,我是否需要单列索引?



我用PostgreSQL在rails中创建了一个表,它是帐户和程序之间的连接表,添加索引的最佳方法是什么?当我具有两个复合索引顺序时,是否需要每个引用的单个索引index: true

create_table :custom_library_programs do |t|
t.references :account, index: true, foreign_key: true
t.references :program, index: true, foreign_key: true
t.boolean :submitted, default: false
t.timestamps null: false
t.index [:account_id, :program_id]
t.index [:program_id, :account_id]
end 

不,您拥有的索引将涵盖您。复合索引的工作方式是,它只会按照索引定义的列顺序顺序使用。 例如,您的第一个索引:

t.index [:account_id, :program_id] ##Speeds up queries for accounts or 'accounts & programs'

将工作与

t.index :account_id##Speeds up queries for accounts

如果您只是查找帐户。然而,这不会加快查找程序的查询速度(只有对"帐户和程序"的查询才会加快(,但由于您以相反的方式(t.index [:program_id, :account_id](制作了复合索引,因此您将具有快速查找两个方向。

相关内容

  • 没有找到相关文章

最新更新