pengoptimuman mysql - Bagaimana untuk mengoptimumkan kelajuan pertanyaan mysql count(id)?
某草草
某草草 2017-05-18 10:51:05
0
7
963

Struktur jadual adalah seperti yang ditunjukkan dalam rajah.

Volume data semasa ialah 8000W baris.

Adakah anda mempunyai sebarang kaedah dan idea pengoptimuman?

某草草
某草草

membalas semua(7)
Ty80

count(*) tidak mengira nilai setiap lajur (tidak kira sama ada ia batal), tetapi secara langsung mengira bilangan baris, yang lebih cekap;

Anda juga boleh menggunakan kaedah penghapusan Sebagai contoh, jika platform adalah qq dan terdapat banyak data, anda boleh menggunakan jumlah data untuk menolak data platform=other;

.

Dari perspektif perniagaan, kos untuk mendapatkan nilai yang tepat adalah sangat tinggi, tetapi kos nilai anggaran lebih rendah Jika keperluan tidak ketat, nilai anggaran boleh digunakan; 🎜#

Anda juga boleh mempertimbangkan untuk menggunakan "pangkalan data memori" seperti redis untuk mengekalkan pemerolehan data yang memakan masa ini;
仅有的幸福

1 Jika saya menghadapi masalah seperti itu, penyelesaian saya ialah membuat jadual baharu, seperti playfrom_count untuk statistik
Adalah lebih baik menggunakan kaedah after_insert dan after_delete dalam rangka kerja, jika tidak Tulis sahaja. satu sendiri.
2 Jika kelantangan pertanyaan sedemikian tidak begitu besar, atau jika ia tidak begitu tepat, anda boleh membuat tugasan untuk mengemas kininya sekali-sekala . Tidak kira anda Sama ada innodb atau myisam, kerana anda menambah di mana, keseluruhan jadual akan diimbas, anda boleh meningkatkan kelajuan perolehan dengan menambah kunci utama.

仅有的幸福

Pilihan 1. Buat jadual partition untuk platform
Pilihan 2. Pisahkan jadual dengan platform
Pilihan 3. Buat indeks berasingan untuk platform, tetapi pertimbangkan bahawa set nilai platform anda hendaklah tidak terlalu besar, jadi Tidak sesuai untuk pengindeksan

曾经蜡笔没有小新

Masalah ini akan dihadapi dalam pangkalan data hubungan klasik Penyelesaian umum adalah untuk mengakses jadual sistem, yang mengandungi bilangan baris data dalam setiap jadual, yang tidak terkira kali lebih pantas daripada COUNT(*) anda.

我想大声告诉你

Naik taraf mesin anda walaupun kiraan mudah mengambil masa 20 saat Walaupun terdapat banyak kaedah seperti jadual partition, saya rasa pelaburan itu tidak berbaloi.

左手右手慢动作

Adalah disyorkan untuk mempertimbangkan keperluan senario perniagaan terlebih dahulu Kos penyelesaian teknikal semata-mata adalah terlalu tinggi, dan dalam banyak kes ia pada dasarnya mustahil untuk melaksanakannya.
Penyelesaian yang boleh dilakukan ialah:
1. Pisahkan jadual: Bahagikan kepada beberapa jadual mengikut platform Enjin storan ialah MyISAM kecekapan pertanyaan adalah sangat tinggi. Adalah perlu untuk mempertimbangkan beban kerja transformasi sistem yang disebabkan oleh sub-jadual dan sama ada MyISAM boleh memenuhi keperluan sistem kerana MyISAM tidak menyokong transaksi.

2. Buat jadual atau medan berlebihan dan kira semula data yang perlu diringkaskan apabila ia berubah Anda perlu mempertimbangkan sama ada sejumlah besar operasi kemas kini akan meningkatkan beban pada sistem.

3. Jika keputusan pertanyaan tidak perlu tepat sepenuhnya, keputusan boleh dikira secara tetap dan disimpan Apabila membuat pertanyaan, jadual asal tidak ditanya secara langsung.

伊谢尔伦

Dalam kes ini, ia boleh dibahagikan kepada beberapa jadual statistik mengikut bulan atau suku Contohnya, jika anda mempunyai 8 juta data, buat jadual baharu dan setiap baris mewakili jumlah rekod sebulan. Dengan cara ini statistik akan menjadi lebih cepat.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan