Rumah >pangkalan data >tutorial mysql >Mengapa SQL COUNT(*) Lambat, dan Bagaimana Saya Boleh Mempercepatkannya?
SQL Count(*) Prestasi: Mengapa Ia Lambat dan Cara Memperbaikinya
Apabila berurusan dengan jadual besar, penting untuk difahami bagaimana pertanyaan tertentu, seperti 'COUNT()', mempengaruhi prestasi. Artikel ini meneroka sebab pertanyaan mudah 'COUNT()' boleh membawa kepada perbezaan prestasi yang ketara berdasarkan parameternya.
Dalam contoh yang diberikan, pertanyaan 'if (select count() daripada BookChapters) = 0' dilaksanakan dengan cepat kerana SQL Server mengoptimumkannya menjadi 'jika wujud(pilih daripada BookChapters)'. Versi yang dioptimumkan ini mengimbas hanya satu baris dan bukannya mengira semua baris.
Walau bagaimanapun, pertanyaan 'if (select count() daripada BookChapters) = 1' dan 'if (select count( ) daripada BookChapters) > 1' berprestasi lebih perlahan kerana SQL Server menggunakan logik yang berbeza. Apabila jadual tidak mempunyai sebarang indeks bukan berkelompok, SQL Server menggunakan indeks bukan berkelompok yang paling sempit untuk operasi 'COUNT(*)'. Tanpa indeks tidak berkelompok, ia mesti mengimbas keseluruhan jadual, yang boleh memakan masa untuk set data yang besar.
Mengoptimumkan Kiraan(*) Kelajuan
Untuk menambah baik prestasi pertanyaan 'COUNT(*)', pertimbangkan strategi ini:
SELECT OBJECT_NAME(i.id) [Table_Name], i.rowcnt [Row_Count] FROM sys.sysindexes i WITH (NOLOCK) WHERE i.indid in (0,1) ORDER BY i.rowcnt desc
SELECT OBJECT_NAME(i.id) [Table_Name], i.rows [Row_Count] FROM sysindexes i (NOLOCK) WHERE i.indid in (0,1) ORDER BY i.rows desc
Dengan menggunakan teknik ini, anda boleh mempercepatkan dengan ketara masa pelaksanaan pertanyaan 'COUNT(*)', terutamanya pada set data yang besar.
Atas ialah kandungan terperinci Mengapa SQL COUNT(*) Lambat, dan Bagaimana Saya Boleh Mempercepatkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!