Mengapakah 'terangkan' Menunjukkan Kiraan Baris Berbeza Daripada 'count()'?

Barbara Streisand
Lepaskan: 2024-11-06 18:54:02
asal
481 orang telah melayarinya

Why Does

Percanggahan antara "explain" dan "count()": Mendedahkan Bilangan Baris Sebenar

Dalam bidang pertanyaan SQL, percanggahan antara baris yang dilaporkan oleh pernyataan "terangkan" dan nilai count() sebenar selalunya boleh menyebabkan pembangun bingung. Untuk membongkar misteri ini, mari kita mendalami nuansa halus fungsi "terangkan".

Pernyataan "terangkan" memberikan cerapan berharga tentang pelan pelaksanaan pertanyaan. Ia memaparkan bilangan baris yang pengoptimum menganggarkan pertanyaan perlu diproses. Walau bagaimanapun, anggaran ini kadangkala boleh menyimpang dengan ketara daripada kiraan sebenar, seperti yang ditunjukkan dalam kod yang disediakan:

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

Percanggahan ini berpunca daripada sifat ramalan algoritma pengoptimum. "terangkan" memberikan anggaran anggaran berdasarkan maklumat statistik yang disimpan tentang jadual. Walaupun anggaran ini lazimnya tepat, anggaran ini boleh tersilap atas pelbagai sebab, seperti statistik lapuk atau pola pertanyaan yang kompleks.

Dalam kes ini, anggaran yang diberikan oleh "terangkan" kurang daripada kiraan sebenar. Ini kerana pengoptimum meremehkan bilangan baris yang sepadan untuk predikat "relation_title='xxxxxxxxx'." Akibatnya, anggaran terlepas pada beberapa baris yang memenuhi syarat.

Untuk mendapatkan kiraan yang tepat, bergantung semata-mata pada "terangkan" boleh mengelirukan. Sebaliknya, fungsi "count()" menyediakan kiraan baris yang tepat dan boleh dipercayai yang sepadan dengan kriteria yang ditentukan. Dengan menggunakan "count()", pembangun boleh memastikan bilangan baris yang tepat yang dipilih oleh pertanyaan mereka.

Adalah penting untuk ambil perhatian bahawa "terangkan" kekal sebagai alat yang berkuasa untuk mengoptimumkan prestasi pertanyaan. Dengan memahami batasannya dan melengkapkannya dengan "count()" apabila perlu, pembangun boleh menyelesaikan masalah dan meningkatkan kecekapan pertanyaan SQL mereka dengan berkesan.

Atas ialah kandungan terperinci Mengapakah 'terangkan' Menunjukkan 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!