sql - 什么是多键索引?

标签 sql ruby-on-rails

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/

相关文章:

sql - Django限制分组查询的方法

sql - 雅典娜 : Query exhausted resources at scale factor

mysql - 如何正确编写带有 WHERE 子句的 sql 查询?

sql - 使用 SQL 查询搜索相似地址

ruby-on-rails - Debian 添加用户

sql - 选择值等于给定值或更低且最接近给定值的行

mysql - "Merging"多个数据库表

ruby-on-rails - 在 Rails 引擎中找不到 jquery-ui (jquery-rails gem)

ruby-on-rails - Capistrano 部署因 Capistrano-Harrow gem 的新请求而中断?

javascript - 如何在 JavaScript 中将图像标签打印到 Rails 资源中?