Mysql
 sql >> база данни >  >> RDS >> Mysql

Кога да добавите какви индекси в таблица в Rails

Би било по-добре, защото ускорява търсенето при сортиране в тази колона. А външните ключове са нещо, което много се търси.

Тъй като версия 5 на релсите, индексът ще бъде създаден автоматично, за повече информация вижте тук .

Не, това вече се прави с релси

Не, същото като по-горе

Тогава индексът е комбиниран индекс от двете колони. Това няма никакъв смисъл, освен ако не искате всички записи за един category_id И един state_id (Трябва да бъде category_id не category ) едновременно.

Индекс като този би ускорил следната заявка:

# 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)

Къде

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

ще ускори тези заявки:

# 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)

Не, защото ако направите това, само един потребител може да бъде в една категория, но смисълът на категорията е, че можете да поставите повече много потребител в една категория. Във вашия User модел имате нещо подобно belongs_to :category и във вашия модел на категория нещо като has_many :users . Ако имате has_many връзка foreign_key полето не трябва да е уникално!

За по-подробна информация относно това трябва да погледнете tadman е страхотен отговор .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да декларирам променлива в MySQL?

  2. Емулиране на безопасна за транзакция SEQUENCE в MySQL

  3. MySQL – MariaDB – Писане на първата съхранена процедура

  4. файлът не се качва в ajax php mysql

  5. Как да защитим клъстер Galera - 8 съвета