SQL_CALC_FOUND_ROWS
hanya berguna jika Anda menggunakan LIMIT
klausa, tetapi masih ingin tahu berapa banyak baris yang akan ditemukan tanpa LIMIT
.
Pikirkan cara kerjanya:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
Anda memaksa database untuk mengambil/mengurai SEMUA data dalam tabel, dan kemudian Anda membuangnya. Bahkan jika Anda tidak akan mengambil baris apa pun, server DB akan tetap mulai menarik data aktual dari disk dengan asumsi bahwa Anda menginginkan data tersebut.
Dalam istilah manusia, Anda membeli seluruh isi toko kelontong super, tetapi membuang semuanya kecuali sebungkus permen karet dari meja kasir.
Sedangkan, melakukan:
SELECT count(*) FROM users;
membuat mesin DB tahu bahwa meskipun Anda ingin mengetahui berapa banyak baris yang ada, Anda tidak peduli dengan data sebenarnya. Pada sebagian besar DBMS cerdas, mesin dapat mengambil jumlah ini dari metadata tabel, atau menjalankan sederhana melalui indeks kunci utama tabel, tanpa pernah menyentuh data baris pada disk.