如何在 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

如何在 CI Active Record 中按 MAX 日期选择

如何在python中为GET请求添加轮询间隔

如何使用 Active Record 回滚特定数据库

Active Record基础

Rails中重写Active Record字段属性