如何在 Active Record 迁移中为字段添加索引以加快查询速度?
Posted
技术标签:
【中文标题】如何在 Active Record 迁移中为字段添加索引以加快查询速度?【英文标题】:How can I add an index to a field in my Active Record migration to make queries faster? 【发布时间】:2014-08-10 03:57:35 【问题描述】:我使用以下迁移来创建字典单词表:
class CreateTerms < ActiveRecord::Migration
def change
create_table :terms do |t|
t.string :word, index: true
t.timestamps
end
end
end
我尝试添加一个“索引”,但由于某种原因,我的查询仍然很慢。服务器日志:
Term Load (34.4ms) SELECT "terms".* FROM "terms" WHERE (word LIKE ('launi%'))
当我通过 id 查找某些东西时,它的速度要快得多:
Term Load (0.8ms) SELECT "terms".* FROM "terms" WHERE "terms"."id" = $1 LIMIT 1 [["id", 143556]]
我是否正确添加了索引?
如何将第一个查询降低到 1 毫秒范围内,如第二个?
【问题讨论】:
首先查看查询的解释输出。此外,一般来说,对主键的精确查找比对辅助键的范围查找要快,这并不罕见。据我所知,like% 查询可能会返回 10000 行 【参考方案1】:您可以尝试的一件事是在主键上创建一个索引,并包含您正在搜索的列。这将使查询数据库变得更快,并且 更容易。
【讨论】:
以上是关于如何在 Active Record 迁移中为字段添加索引以加快查询速度?的主要内容,如果未能解决你的问题,请参考以下文章
具有完全迁移支持的 .net Active Record ORM