Rumah  >  Artikel  >  pangkalan data  >  Mengapa "terangkan *" Kiraan Baris yang dipilih Berbeza daripada "bilangan()"?

Mengapa "terangkan *" Kiraan Baris yang dipilih Berbeza daripada "bilangan()"?

Susan Sarandon
Susan Sarandonasal
2024-11-07 02:42:02512semak imbas

Why Does

Sisihan dalam Kiraan Baris antara "count()" dan "explain selected *""

Arahan "explain selected *" dalam MySQL memberikan anggaran baris yang diproses semasa pertanyaan, bagaimanapun, anggaran ini boleh berbeza daripada kiraan baris sebenar yang diperoleh menggunakan fungsi "count()".

Penjelasan

Pernyataan "explain selected *" memaparkan maklumat tentang cara MySQL melaksanakan pertanyaan Antara butiran yang disediakan ialah anggaran bilangan baris yang akan diimbas oleh pertanyaan ini berdasarkan statistik yang diselenggara oleh MySQL tentang jadual yang disoal.

Walau bagaimanapun, statistik ini mungkin tidak sentiasa tepat Faktor seperti pengedaran data, struktur jadual dan konteks pertanyaan boleh mempengaruhi ketepatan anggaran Akibatnya, kiraan baris "terangkan *" mungkin tidak sepadan dengan kiraan baris sebenar yang diproses oleh pertanyaan.

Contoh

Pertimbangkan contoh berikut:

mysql> select count(*) from table where relation_title='xxxxxxxxx';
+----------+
| count(*) |
+----------+
|  1291958 |
+----------+

mysql> explain select *  from table where relation_title='xxxxxxxxx';
+----+-------------+---------+-
| id | select_type | rows    |
+----+-------------+---------+-
|  1 | SIMPLE      | 1274785 | 
+----+-------------+---------+-

Seperti yang diperhatikan, "terangkan dipilih *" kenyataan menganggarkan bahawa 1,274,785 baris akan diimbas untuk mendapatkan semula data. Walau bagaimanapun, fungsi "count()" mengembalikan kiraan sebenar 1,291,958 baris.

Implikasi

Percanggahan antara kiraan baris boleh mengelirukan pengguna untuk mempercayai bahawa indeks sedang digunakan untuk mengoptimumkan pertanyaan. Walau bagaimanapun, ini mungkin tidak berlaku dan pertanyaan masih boleh mengimbas sejumlah besar baris.

Kesimpulan

Sementara "terangkan * yang dipilih" menyediakan maklumat berharga mengenai pelaksanaan pertanyaan, ia tidak boleh dipercayai sebagai ukuran tepat bagi kiraan baris sebenar yang diproses oleh pertanyaan. Fungsi "count()" harus digunakan untuk mendapatkan kiraan tepat bagi baris yang sepadan.

Atas ialah kandungan terperinci Mengapa "terangkan *" Kiraan Baris yang dipilih Berbeza daripada "bilangan()"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn