Rumah  >  Soal Jawab  >  teks badan

pengoptimuman mysql - Bagaimana untuk mengoptimumkan kelajuan pertanyaan mysql count(id)?

Struktur jadual adalah seperti yang ditunjukkan dalam rajah.

Volume data semasa ialah 8000W baris.

Adakah anda mempunyai sebarang kaedah dan idea pengoptimuman?

某草草某草草2710 hari yang lalu884

membalas semua(7)saya akan balas

  • PHP中文网

    PHP中文网2017-05-18 10:53:05

    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;

    balas
    0
  • 仅有的幸福

    仅有的幸福2017-05-18 10:53:05

    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.

    balas
    0
  • 仅有的幸福

    仅有的幸福2017-05-18 10:53:05

    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

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-18 10:53:05

    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.

    balas
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-18 10:53:05

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

    balas
    0
  • ringa_lee

    ringa_lee2017-05-18 10:53:05

    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.

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-18 10:53:05

    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.

    balas
    0
  • Batalbalas