【问题标题】:Why does rails use id as primary key and should I index over other columns?为什么 rails 使用 id 作为主键并且我应该索引其他列?
【发布时间】:2015-11-14 08:22:46
【问题描述】:

我了解 Ruby on Rails 使用 id 作为其所有表的主键属性。我知道这很方便,因为 id 总是不同的、自动递增的,并且很容易索引(我认为),但我想知道是否应该在其他属性上建立索引,如果可能的话。

我有一个网络应用程序,用户可以将图像上传到投资组合中,所以我有UserPortfolioImage,并且Image 表有两列:

:user_id
:portfolio_id

所以有时我可能想挑选属于某个用户的所有图像或某个投资组合中的所有图像,或一系列投资组合等'

我应该让 Rails 为我经常搜索的属性建立索引吗?如果是这样,有没有办法做到这一点?这样做有什么缺点吗?

我记得前段时间读到有一些 gem 可以让 rails 将其他字段作为主键的一部分,但是如果我只想在它们之上构建索引而不将它们包含在主键中怎么办?

【问题讨论】:

    标签: ruby-on-rails primary-key


    【解决方案1】:

    是的,在您经常用于搜索的列上创建索引是个好主意,我们鼓励这样做。

    在您的工作目录中:

    rails generate migration add_indexes_to_images
    

    这将生成一个迁移文件,然后您可以编辑该文件以添加您的索引:

    class AddIndexesToImages < ActiveRecord::Migration
      def change    
        add_index :images, :user_id
        add_index :images, :portfolio_id
      end
    end
    

    Read more about migrations and all the things they can do.

    【讨论】:

      猜你喜欢
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2013-03-05
      • 2021-02-24
      • 2011-08-01
      • 2016-05-10
      相关资源
      最近更新 更多