Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kiedy dodać jakie indeksy w tabeli w Railsach?

Byłoby lepiej, bo przyspiesza wyszukiwanie w sortowaniu w tej kolumnie. A klucze obce są często wyszukiwane.

Od wersji 5 szyn indeks będzie tworzony automatycznie, więcej informacji znajdziesz tutaj .

Nie, to już jest wykonywane przez szyny

Nie, tak samo jak powyżej

Wtedy indeks jest połączonym indeksem dwóch kolumn. To nie ma sensu, chyba że chcesz, aby wszystkie wpisy dla jednego category_id ORAZ jeden state_id (Powinno to być category_id nie category ) w tym samym czasie.

Indeks taki jak ten przyspieszyłby następujące żądanie:

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

Gdzie

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

przyspieszy te żądania:

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

Nie, ponieważ jeśli to zrobisz, tylko jeden użytkownik może należeć do jednej kategorii, ale znaczenie kategorii jest takie, że możesz umieścić więcej wielu użytkownika do jednej kategorii. W Twoim User model masz coś takiego belongs_to :category aw modelu kategorii coś takiego jak has_many :users . Jeśli masz has_many związek foreign_key pole nie może być niepowtarzalne!

Aby uzyskać bardziej szczegółowe informacje na ten temat, zapoznaj się z tadmanem Świetny odpowiedz .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabela przestawna przy użyciu MySQL

  2. MySQL - Zliczanie wierszy i problem z lewym złączeniem

  3. Jak wykonać skrypt mysql ze zmiennymi przy użyciu PHP::PDO?

  4. Mierzenie czasu online na stronie internetowej

  5. Czy można automatycznie utworzyć plik mysqldump, który nie wymusza ograniczeń klucza obcego?