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

Dostosuj stronę główną i e-maile aplikacji Deals dzięki historii użytkownika:jak to zrobić we właściwy sposób na Railsach/postgreSQL?

Opisany schemat będzie bardzo wydajny dla rodzaju zapytania, którym jesteś zainteresowany, pod warunkiem, że umieścisz prawidłowe indeksy w swoich tabelach. Bazy danych nie zachowują się jak listy:pytanie „W których transakcjach brało udział XXX” nie powinno skanować całej tabeli, ponieważ poprawnie zaindeksowana tabela będzie dokładnie wiedziała, gdzie znaleźć wszystkie transakcje XXX.

Aby zapewnić prawidłową konfigurację, migracje będą wyglądać tak:

class CreateStandardUsers < ActiveRecord::Migration
  def change
    create_table :standard_users do |t|
      t.string :name
      t.timestamps
      # More fields go here
    end

    add_index :standard_users, :name
  end
end

class CreateDeals < ActiveRecord::Migration
  def change
    create_table :deals do |t|
      t.references :admin_user
      # other fields go here
    end

    add_index :deals, :admin_user_id
    # other indices go here... anything you want to search on efficiently.
  end
end

class CreateDealParticipations < ActiveRecord::Migration
  def change
    create_table :deal_participations do |t|
      t.references :standard_user
      t.references :deal

      t.timestamps
    end

    add_index :deal_participations, :standard_user_id
    add_index :deal_participations, :deal_id
    add_index :deal_participations, :created_at
  end
end

W tych migracjach jest jeszcze wiele innych elementów (np. należy dodać ograniczenia niezerowe, ograniczenia unikatowości itp.). Ale chodzi o to, że posiadanie tych indeksów sprawia, że ​​operacje na bazie danych, które opisujesz, są niezwykle szybkie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajność indeksu SQL — ASC vs DESC

  2. Wybierz wiele wierszy w jednej kolumnie oddzielonych nowym wierszem

  3. Błąd połączenia PDO SSL

  4. Część 1:jQuery -> MySQL -> jQuery -> HTML

  5. Jak ustawić parametry połączenia za pomocą Entity Framework