Mengapa 'terangkan' Melaporkan Kiraan Baris Berbeza Daripada 'count()'?

Susan Sarandon
Lepaskan: 2024-11-06 21:33:02
asal
436 orang telah melayarinya

Why Does

Percanggahan dalam Kiraan Baris Dikembalikan oleh "explain" dan "count()": Pandangan Lebih Dekat

Situasi yang membingungkan timbul apabila membandingkan bilangan baris yang dikembalikan oleh "terangkan" dan kiraan baris sebenar yang diperoleh daripada "count()". Walaupun kelihatan intuitif untuk menganggap bahawa "terangkan" memberikan anggaran yang tepat tentang bilangan baris yang diambil, ini tidak selalu berlaku.

Memahami Perintah "terangkan"

Arahan "terangkan" sebenarnya tidak melaksanakan pertanyaan; sebaliknya, ia menganalisis pelan pertanyaan dan menganggarkan bilangan baris yang akan diproses. Anggaran ini adalah berdasarkan pelbagai faktor, termasuk statistik yang dikekalkan tentang jadual yang terlibat.

Mengapa Baris yang Dilaporkan oleh "explain" Mungkin Berbeza

Percanggahan antara "explain " output dan kiraan baris sebenar boleh disebabkan oleh sebab berikut:

  • Ketidaktepatan anggaran: Anggaran yang digunakan oleh "terangkan" tidak selalunya tepat, terutamanya untuk pertanyaan kompleks yang melibatkan berbilang jadual atau cantuman.
  • Statistik lapuk: Statistik yang bergantung kepada "terangkan" mungkin tidak terkini, yang membawa kepada anggaran yang tidak tepat.

Contoh Percanggahan

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 | 
+----+-------------+---------+-
Salin selepas log masuk

Seperti yang anda lihat, "terangkan" menganggarkan bahawa pertanyaan akan memproses 1274785 baris, manakala "count(*)" mengembalikan kiraan 1291958 baris. Percanggahan ini timbul disebabkan oleh ketidaktepatan anggaran dan statistik lapuk yang dijelaskan di atas.

Kepentingan Kiraan Baris Tepat

Mendapatkan kiraan baris yang tepat adalah penting untuk mengoptimumkan pertanyaan dan mengelakkan overhead yang tidak diperlukan . Dengan memahami batasan "terangkan", pembangun boleh membuat keputusan termaklum sama ada untuk bergantung pada anggarannya atau mencari kaedah alternatif untuk menentukan bilangan baris yang diproses.

Atas ialah kandungan terperinci Mengapa 'terangkan' Melaporkan Kiraan Baris Berbeza Daripada 'count()'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!