Memahami Pengoptimum Pertanyaan MySQL: COUNT(id) vs COUNT(*)

WBOY
Lepaskan: 2024-07-18 04:35:10
asal
687 orang telah melayarinya

Understanding MySQL Query Optimizer: COUNT(id) vs COUNT(*)

Dalam MySQL, kami menggunakan fungsi "COUNT" hampir setiap hari untuk membantu kami mengira bilangan baris untuk pertanyaan yang diberikan. Dilema terbesar setiap pembangun mengenai prestasi ialah sama ada lebih baik menggunakan "COUNT(*)" atau "COUNT(id)".


Pengoptimum MySQL

Pengoptimum MySQL ialah komponen penting MySQL yang bertanggungjawab untuk menentukan cara paling berkesan untuk melaksanakan pertanyaan SQL yang diberikan. Bahagian ini memainkan peranan penting dalam dilema yang mana "COUNT" adalah yang terpantas. Jadi mari kita terangkan...

Kami mencipta jadual "pengguna", yang akan mempunyai indeks pada lajur "nama_pertama":

CREATE table users (
    id int NOT NULL AUTO_INCREMENT,
    first_name varchar(256) NOT NULL,
    PRIMARY KEY (id),
    INDEX idx_first_name (first_name)
);
Salin selepas log masuk

Kami menambah beberapa baris dan menjalankan 2 pertanyaan berikut:

EXPLAIN SELECT COUNT(id) FROM users;
Salin selepas log masuk
EXPLAIN SELECT COUNT(*) FROM users;
Salin selepas log masuk

Apabila anda menjalankan 2 pertanyaan SQL ini, anda akan perasan bahawa mereka menggunakan indeks yang sama, "COUNT(*)" tidak lebih perlahan sama sekali, MySQL Optimizer bertanggungjawab untuk itu, yang mencari indeks dalam jadual yang akan memberikan persembahan yang terbaik. Dalam kes ini, kedua-dua pertanyaan akan mengembalikan data pada kelajuan yang sama, kerana mereka menggunakan indeks yang sama dan kerana pengoptimum MySQL memutuskan bahawa indeks itu adalah yang paling cekap.

Pengoptimum MySQL mempertimbangkan banyak parameter yang menyumbang kepada memilih kunci indeks terbaik supaya pertanyaan yang diberikan mengembalikan data secepat mungkin.


Kesimpulan

Penggunaan "COUNT(*)" secara amnya disyorkan kerana ia membenarkan Pengoptimum MySQL memilih pendekatan yang paling cekap, manakala "COUNT(column_name)" boleh berguna secara khusus dalam situasi di mana perlu mengira hanya bukan- Nilai NULL dalam lajur tertentu. Memahami cara Pengoptimum MySQL berfungsi dan cara menggunakan indeks adalah penting untuk mencapai prestasi pertanyaan yang optimum.

Atas ialah kandungan terperinci Memahami Pengoptimum Pertanyaan MySQL: COUNT(id) vs COUNT(*). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
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!