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

60 juta entri, pilih entri dari bulan tertentu. Bagaimana cara mengoptimalkan basis data?

Untuk mendapatkan entri di bulan tertentu, untuk tahun tertentu, lebih cepat - Anda akan perlu mengindeks time kolom :

CREATE INDEX idx_time ON ENTRIES(time) USING BTREE;

Selain itu, gunakan:

SELECT e.* 
  FROM ENTRIES e
 WHERE e.time BETWEEN '2010-04-01' AND DATE_SUB('2010-05-01' INTERVAL 1 SECOND)

...karena BETWEEN bersifat inklusif, jadi Anda akan mendapatkan apa pun tertanggal "2010-05-01 00:00:00" dengan kueri yang Anda poskan.

Saya juga ingin memilih data dari bulan tertentu dari DataSourceID tertentu

Anda dapat menambahkan indeks terpisah untuk kolom datasourceid:

CREATE INDEX idx_time ON ENTRIES(datasourceid) USING BTREE;

...atau siapkan indeks penutup untuk menyertakan kedua kolom:

CREATE INDEX idx_time ON ENTRIES(time, datasourceid) USING BTREE;

Indeks penutup mengharuskan kolom paling kiri harus digunakan dalam kueri agar indeks dapat digunakan. Dalam contoh ini, memiliki time pertama akan berfungsi untuk kedua situasi yang Anda sebutkan -- datasourceid tidak harus digunakan agar indeks dapat digunakan. Namun, Anda harus menguji kueri Anda dengan melihat keluaran EXPLAIN untuk benar-benar mengetahui apa yang terbaik untuk data Anda &kueri yang dilakukan pada data tersebut.

Yang mengatakan, indeks akan memperlambat pernyataan INSERT, UPDATE dan DELETE. Dan indeks tidak memberikan banyak nilai jika data kolom memiliki sedikit nilai yang berbeda - IE:kolom boolean adalah pilihan yang buruk untuk diindeks, karena kardinalitasnya rendah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah nama tabel di MySQL case sensitif?

  2. int(11) vs. int(lainnya)

  3. Bagaimana mendefinisikan pesanan ORDER BY khusus di mySQL

  4. Tampilkan nilai dari tabel database MySQL di dalam tabel HTML di halaman web

  5. Cari kecocokan seluruh kata di MySQL