sql >> Databáze >  >> RDS >> Mysql

Kdy přidat jaké indexy do tabulky v Rails

Bylo by to lepší, protože to urychluje vyhledávání v řazení v tomto sloupci. A cizí klíče jsou něco, co se hodně hledá.

Od verze 5 rails bude index vytvářen automaticky, další informace naleznete zde .

Ne, to už dělají koleje

Ne, stejně jako výše

Pak je index kombinovaným indexem dvou sloupců. To nedává žádný smysl, pokud nechcete všechny položky pro jeden category_id A jeden state_id (Mělo by to být category_id nikoli category ) ve stejnou dobu.

Index, jako je tento, by urychlil následující požadavek:

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

Kde

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

urychlí tyto požadavky:

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

Ne, protože pokud to uděláte, v jedné kategorii může být pouze jeden uživatel, ale význam kategorie je ten, že můžete vložit více mnoha uživatele do jedné kategorie. Ve vašem User model máte něco takového belongs_to :category a ve vašem modelu kategorie něco jako has_many :users . Pokud máte has_many vztah foreign_key pole nesmí být jedinečné!

Pro podrobnější informace o tom byste se měli podívat na tadman skvělý odpovědět .



  1. Jak hledat řetězec v databázích SQL Serveru

  2. MariaDB JSON_TYPE() vysvětleno

  3. Otázka MySQL - Jak zvládnout více typů uživatelů - jednu tabulku nebo více?

  4. gcc nezkompiluje a nespustí knihovny MySQL C