Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Khi nào thì thêm chỉ mục nào vào bảng trong Rails

Nó sẽ tốt hơn, bởi vì nó tăng tốc độ tìm kiếm trong việc sắp xếp trong cột này. Và Khoá ngoại là thứ được tìm kiếm rất nhiều.

Vì Phiên bản 5 của rails, chỉ mục sẽ được tạo tự động, để biết thêm thông tin, hãy xem tại đây .

Không, điều này đã được thực hiện bởi rails

Không, giống như trên

Sau đó, chỉ mục là một chỉ mục kết hợp của hai cột. Điều đó không có ý nghĩa gì, trừ khi bạn muốn tất cả các mục nhập cho một category_id một state_id (Nó phải là category_id không phải category ) đồng thời.

Chỉ mục như thế này sẽ đẩy nhanh yêu cầu sau:

# rails 2
User.find(:all, :conditions => { :state_id => some_id, :category_id => some_other_id })

# rails 3
User.where(:state_id => some_id, :category_id => some_other_id)

Ở đâu

add_index :users, :category_id
add_index :users, :state_id

sẽ tăng tốc các yêu cầu này:

# rails 2+3
User.find_by_category_id(some_id)
User.find_by_state_id(some_other_id)

# or
# rails 2
User.find(:all, :conditions => {:category_id => some_id})
User.find(:all, :conditions => {:state_id => some_other_id})

# rails 3
User.where(:category_id => some_id)
User.where(:state_id => some_other_id)

Không, bởi vì nếu bạn làm điều này, chỉ một người dùng có thể ở trong một danh mục, nhưng ý nghĩa của danh mục là bạn có thể đặt thêm nhiều người dùng vào một danh mục. Trong User của bạn mô hình bạn có một cái gì đó giống như thế này belongs_to :category và trong mô hình Danh mục của bạn giống như has_many :users . Nếu bạn có has_many mối quan hệ với foreign_key trường không được là duy nhất!

Để biết thêm thông tin chi tiết về điều này, bạn nên xem tại tadman thật tuyệt câu trả lời .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục “ERROR 1222 (21000):Các câu lệnh SELECT đã sử dụng có một số cột khác nhau” khi sử dụng UNION trong MySQL

  2. Làm cách nào để chuyển mật khẩu từ tập lệnh bash sang aptitude để cài đặt mysql?

  3. Làm cách nào để khử trùng đúng cách dữ liệu nhận được từ một vùng văn bản, khi xuất dữ liệu đó trở lại vùng văn bản?

  4. Chúng ta có thể thực thi truy vấn SQL trong JQuery không

  5. Có thể thực hiện một khóa ngoại MySQL cho một trong hai bảng khả thi không?