嗨大家,我想知道,如果我在postgreSQL上创建两列的唯一索引,那么两列的正常索引也可以使用相同的唯一索引,或者我必须为两者创建一个唯一索引和两个索引列如代码所示?我想创建talent_id,job_id的唯一索引,这两列也应该单独编入索引。我读了很多资源但没有得到适当的答案。
add_index :talent_actions, [:talent_id, :job_id], unique: true
上面的代码是否也处理下面的索引或者我必须单独添加下面的索引?
add_index :talent_actions, :talent_id
add_index :talent_actions, :job_id
谢谢。
答案 0 :(得分:1)
索引是数据库中的一个对象,如果查询计划程序决定它是合适的,它可用于更快地查找数据。所以对你的问题的简单回答是" no",创建一个索引不会导致数据库中的结构与创建三个不同的索引相同。
我认为你真正想知道的是:
我是否需要所有三个索引,或者唯一索引是否已优化所有查询?
与任何数据库优化一样,这取决于您运行的查询以及您拥有的数据。
以下是一些注意事项:
通常,查询计划员可以使用多个索引,其作用是估算您编写的查询的上述因素的成本。
通常,创建多个您认为可能有帮助的索引并不会造成伤害,但它会耗尽磁盘空间,偶尔会导致查询计划程序选择更糟糕的计划。因此,最好的方法是始终使用一些实际数据填充数据库,并查看一些真实查询的查询计划。