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 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) );
Kami menambah beberapa baris dan menjalankan 2 pertanyaan berikut:
EXPLAIN SELECT COUNT(id) FROM users;
EXPLAIN SELECT COUNT(*) FROM users;
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.
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!