+1 vote
15 tayangan

Saya ingin menampilkan jumlah jenis kelamin di ambil dari tabel user, dimana ada beberapa persyaratan agar dapat menghitung jumlah jenis kelamin yang ada, berikut adalah script sql nya :
 

select

case 

when (u.gender = 1) then 'Laki-Laki'

when (u.gender = 2) then 'Perempuan'

when (u.gender = 0) then 'Tidak Ingin Memberi Tahu'

else  'Tidak Diketahui' 

end as ket

,count(1) as total 

from users u

join participants p ON u.userable_id = p.id

        AND u.userable_type = 'participant'

    JOIN jabfung_user ju on ju.nip = p.nip

group by u.gender

Ketika saya menjalankan kode diatas dengan data yang sedikit itu tidak terjadi masalah, seperti gambar berikut :


Tetapi jika datanya itu lebih banyak, semisalnya diatas 5rb, terjadi error seperti ini : 


Kenapa bisa terjadi error seperti itu ?
Dan apa ada yang pernah mengalami hal serupa ?

dalam Server oleh  Kawan Berbageek (600 poin) | 15 tayangan

1 Jawaban

+1 vote
Jawaban terbaik
Ada 3 opsi yang bisa dilakukan:

1. Bikin index di kolom-kolom yang terlibat join dan/atau where supaya query lebih cepat. Dalam contoh di atas ada userable_type dan nip.

2. Setting di mysql server-nya dengan ditambahkan max timeout-nya di my.ini atau my.cnf

3. Setting di mysql client yang kamu pakai, misal MySQL Workbench/Data Grip/Valentina Studio. Misal di MySQL Workbench ada di Edit → Preferences → SQL Editor → DBMS connection read time out
oleh  Kawan Berbageek (890 poin)
dipilih oleh
terima kasih pa, saya melakukan opsi pertama untuk menambahkan index pada kolom yg berkaitan
Selamat datang di Berbageek! Berbageek adalah tempat berbagi pengetahuan programming, ui/ux design, digital marketing & project management dengan konsep tanya-jawab. Sehingga kita bisa menciptakan solusi lebih cepat dan lebih baik. Berikut adalah rule untuk bertanya:
  1. Jangan duplikasi pertanyaan. Dicari dulu pertanyaan yang serupa.
  2. Buatlah pertanyaan yang generik. Tidak boleh bertanya spesifik menyebutkan nama proyek atau nama perusahaan.