sql >> Base de Datos >  >> RDS >> Mysql

Cuándo agregar qué índices en una tabla en Rails

Sería mejor, porque acelera la búsqueda en la clasificación en esta columna. Y las claves foráneas son algo que se busca mucho.

A partir de la versión 5 de Rails, el índice se creará automáticamente, para obtener más información, consulte aquí .

No, esto ya se hace por rieles

No, igual que arriba

Entonces el índice es un índice combinado de las dos columnas. Eso no tiene ningún sentido, a menos que desee todas las entradas para un category_id Y uno state_id (Debería ser category_id no category ) al mismo tiempo.

Un índice como este aceleraría la siguiente solicitud:

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

donde

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

acelerará estas solicitudes:

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

No, porque si haces esto, solo un usuario puede estar en una categoría, pero el significado de categoría es que puedes poner más muchas usuario en una categoría. En tu User modelo tienes algo como esto belongs_to :category y en su modelo de categoría algo como has_many :users . Si tienes un has_many relación la foreign_key ¡El campo no debe ser único!

Para obtener información más detallada sobre esto, debe consultar tadman es genial respuesta .