Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kustomisasi beranda dan email aplikasi deal berkat riwayat pengguna:bagaimana melakukannya dengan cara yang benar di Rails/postgreSQL?

Skema yang Anda jelaskan akan sangat efisien untuk jenis kueri yang Anda minati, asalkan Anda meletakkan indeks yang benar di tabel Anda. Basis data tidak berperilaku seperti daftar:mengajukan pertanyaan "Kesepakatan mana yang diikuti XXX" tidak boleh memindai seluruh tabel, karena tabel yang diindeks dengan benar akan tahu persis di mana menemukan semua transaksi XXX.

Untuk menyiapkannya dengan benar, seperti inilah tampilan migrasi Anda:

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

Masih banyak lagi yang termasuk dalam migrasi ini (mis. Anda harus menambahkan batasan non-null, batasan keunikan, dll). Tapi intinya adalah memiliki indeks ini membuat operasi database yang Anda gambarkan menjadi sangat cepat.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PILIH Kinerja Pernyataan menggunakan * versus Daftar Nama Bidang

  2. Mendapatkan KESALAHAN:Perintah salah dengan status keluar 1:saat mencoba menginstal mysql

  3. Bagaimana cara saya mengurangi menggunakan SQL di MYSQL antara dua nilai waktu tanggal dan mengambil hasilnya dalam menit atau detik?

  4. Transaksi MySQL dalam transaksi

  5. Bagaimana menemukan delta waktu dari baris datatime di mysql?