add_index :microposts, [:user_id, :created_at]
我正在阅读 Michael Hartl 的 railstutorial 并注意到他正在使用称为多键索引的东西。我知道这意味着 Active Record 同时使用两个键,但我不确定使用多个键索引的优缺点是什么。
如果有人能给出答案,我将不胜感激。
最佳答案
任何索引都可以通过允许查询缩小要检查的行集来提供好处。
当您的查询包含这些多列的条件时,多列索引会有所帮助。
例如:
SELECT * FROM Mytable WHERE user_id = 123 AND created_at > '2013-02-01'
多列索引缩小到与 user_id 123 相关联的行子集,然后在该子集中,它进一步缩小选择范围到具有最近 created_at 值的那些。
如果索引中没有第二列,RDBMS 必须将 user_id 123 的所有行加载到内存中,然后才能确定它们是否通过了条件。
如需更多信息,请参阅我的演示文稿 How to Design Indexes, Really .
关于sql - 什么是多键索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14844780/