Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengoptimumkan COUNT Pertanyaan Lambat dalam Pelayan SQL?
Pengoptimuman Prestasi SQL: Kiraan Pertanyaan
Apabila bekerja dengan set data yang besar, pertanyaan yang mengira baris boleh menjadi mahal dari segi pengiraan dan memperlahankan prestasi. Artikel ini meneroka implikasi prestasi pertanyaan kiraan dan menyediakan penyelesaian untuk mengoptimumkannya dalam SQL Server.
Perbezaan Prestasi dalam Kiraan Pertanyaan
Pertimbangkan pertanyaan SQL berikut pada jadual dengan lebih 20 juta baris:
if (select count(*) from BookChapters) = 0
Pertanyaan ini dilaksanakan dengan pantas, kerana SQL Server mengoptimumkannya ke dalam:
if exists(select * from BookChapters)
Pada asasnya, ia menyemak kehadiran mana-mana baris daripada mengiranya. Walau bagaimanapun, jika pertanyaan diubah suai kepada:
if (select count(*) from BookChapters) = 1
atau
if (select count(*) from BookChapters) > 1
masa pelaksanaan meningkat secara mendadak kepada lebih 10 minit.
Memahami Jurang Prestasi
Perbezaan prestasi berpunca daripada fakta bahawa untuk pertanyaan kiraan dengan syarat (cth., = 1, > 1), SQL Server menggunakan pendekatan yang berbeza. Ia menggunakan indeks bukan berkelompok yang paling sempit untuk mengira baris. Memandangkan jadual dalam contoh tidak mempunyai sebarang indeks bukan berkelompok, SQL Server mesti menggunakan imbasan jadual penuh, yang membawa kepada prestasi perlahan.
Teknik Pengoptimuman
Untuk mengoptimumkan kira pertanyaan, pertimbangkan teknik berikut:
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 sum (spart.rows) from sys.partitions spart where spart.object_id = object_id(’YourTable’) and spart.index_id < 2
select max(ROWS) from sysindexes where id = object_id(’YourTable’)
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan COUNT Pertanyaan Lambat dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!