Kata Pengantar
Hari ini saya menghadapi masalah tersekat laman web selepas beberapa minit Okay, saya menjumpai sql dalam skrip pemasaan, dan kecekapan pelaksanaan adalah sangat perlahan DBA mencadangkan untuk menukar atau ke dalam, dan kecekapan meningkat ratusan kali
Penerangan senario
1. Pertanyaan perkaitan dua Jadual
2 Jumlah data dalam jadual1 adalah hampir 1 juta
3 Jumlah data dalam jadual2 adalah hampir 9 juta
4 diindeks
5. Pernyataan pertanyaan asal
SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title="衣服" or b.title="裤子" or b.title="帽子" limit 0,100
6. Penyataan pertanyaan diubah
SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title IN ("衣服","裤子","帽子") limit 0,100
Kecekapan selepas transformasi
Masa pelaksanaan sql asal ialah 5s , selepas perubahan hanya mengambil masa 0.01s
Sebab
Saya menyemak maklumat dan mendapati bahawa apabila jumlah data melebihi satu juta dan syarat tidak diindeks, kecekapan pertanyaan atau adalah jauh lebih rendah daripada in. Kecekapan atau ialah O(n), manakala dalam Kecekapan ialah O(logn). Apabila n lebih besar, perbezaan kecekapan menjadi lebih jelas.
Pembelajaran yang disyorkan: "tutorial video mysql"