Saya menghitung catatan dengan pertanyaan seperti
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%something%'
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%another%'
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%word%'
Untuk setiap hitungan, mysql perlu menelusuri tabel, dan ini adalah masalah besar jika memiliki meja panjang dan banyak kueri.
Saya ingin tahu apakah ada cara untuk membuat semua perhitungan dalam satu permintaan. Dalam hal ini, ketika mysql berjalan di setiap baris, itu akan memproses semua jumlah, dan tidak perlu memindai seluruh tabel berulang-ulang.
mysql
query
query-performance
count
Googlebot
sumber
sumber
Jawaban:
Untuk mendapatkan hitungan untuk masing-masing yang dapat Anda coba
sumber
Mirip dengan Aaron's solutio, sintaksis lebih pendek:
Ekspresi LIKE membuat hasil boolean.
TRUE
adalah 1 ,FALSE
adalah 0 , jadiCASE
berlebihan di sini.sumber
TINYINT
dalam cerita ini.SUM
mengambil jenis nomor apa pun (bahkan float) dan menghasilkan hasil numerik. Anda bisaSUM
kolomTINYINT
tipe untuk mendapatkan nilai dalam ribuan - itu tidak masalah.TINYINT
dalam cerita ini" mungkin bukan kalimat yang baik untuk memulai.SUM
fungsi seperti yang disebutkan di sini tidak bekerja dengan cara yang sama di MS SQL Server. Dalam Transct-SQLSUM
dapat digunakan dengan kolom numerik saja.Jika saya mendapatkan kebutuhan Anda dengan benar, ini mungkin akan melakukan trik:
sumber