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

Meningkatkan efisiensi indeks MySQL - kolom dalam banyak indeks?

Sekedar catatan singkat karena hal semacam ini terlihat berulang kali:GABUNG di prism_worlds tidak diperlukan karena Anda (kemungkinan besar) tidak memerlukan data dari tabel itu. Anda pada dasarnya meminta database "beri saya setiap nama dunia yang namanya sama dengan 'sesuatu'". Gunakan subkueri skalar sebagai gantinya.

Buat indeks unik di prism_worlds.world dan jalankan kueri seperti

SELECT *
FROM prism_data 
WHERE prism_data.world_id = (SELECT w.world_id FROM prism_worlds AS w WHERE w.world = 'DeuxTiersMondes')
LIMIT 1000;

Pengoptimal akan mengetahui bahwa prism_data.world_id dibatasi pada nilai konstan tunggal. MySQL akan menjalankan kueri sebelumnya untuk mengetahui nilai ini dan menggunakannya di sepanjang kueri. Lihat EXPLAIN untuk const -subquery dieksekusi.

Mengenai prism_data.x , .y dan .z :Anda mungkin ingin membuat kolom geometri dan indeks spasial untuk itu. Jika Anda perlu tetap berpegang pada nilai yang terpisah, Anda mungkin ingin memisahkan seluruh geometri dunia menjadi voxel dengan ukuran tetap (diwakili oleh satu int) dan menggunakan geometri sederhana untuk mengetahui posisi mana yang termasuk dalam voxel.

Solusi pribadi saya adalah tidak memberikan terlalu banyak pemikiran untuk menambahkan trilyunan pertanyaan di tabel ini. Indeks akan membuatnya lambat dan besar. Gunakan tugas cron untuk mengisi tabel pelaporan (tampilan terwujud) untuk menghasilkan hasil sebelumnya dan gunakan selama tugas cron muncul dan memperbaruinya lagi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_LENGTH() – Mengembalikan Panjang Dokumen JSON di MySQL

  2. MySqlException di ExecuteReader dengan Memilih UserID (PK)

  3. Bagaimana cara keluar dari kata kunci nilai di mysql saat menggunakan pernyataan Pilih

  4. Mengapa Huruf Arab Tidak Dimasukkan Dalam Basis Data?

  5. Contoh MySQL REGEXP