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

Персонализирайте началната страница и имейлите на приложението за сделки благодарение на потребителската история:как да го направите по правилния начин на Rails/postgreSQL?

Схемата, която описахте, ще бъде много ефективна за вида заявка, която ви интересува, при условие че поставите правилните индекси на вашите таблици. Базите данни не се държат като списъци:задаването на въпроса „В кои сделки е участвал XXX“ не трябва да сканира цялата таблица, тъй като правилно индексираната таблица ще знае точно къде да намери всички сделки на XXX.

За да направите тази настройка правилно, ето как ще изглеждат вашите миграции:

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

Има още много неща, които принадлежат към тези миграции (напр. трябва да добавите ненулеви ограничения, ограничения за уникалност и т.н.). Но въпросът е, че наличието на тези индекси прави операциите с базата данни, които описвате, изключително бързи.




  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 Row след 30 минути с помощта на Cron Jobs/Event Scheduler

  2. извлича запис в ред с клауза IN - има дублирани стойности в клауза IN

  3. MYSQL:Как да намеря player_id от фамилното име?

  4. MySQL Създаване на таблици с външни ключове, даващи errno:150

  5. Laravel вмъкване в 3 свързани таблици