Saya mencoba beberapa SELECT COUNT(*) FROM MyTable
vs. SELECT COUNT(SomeColumn) FROM MyTable
dengan berbagai ukuran tabel, dan di mana SomeColumn
sekali adalah kolom kunci pengelompokan, setelah berada dalam indeks yang tidak berkerumun, dan sekali tidak dalam indeks sama sekali.
Dalam semua kasus, dengan semua ukuran tabel (dari 300.000 baris hingga 170 juta baris), saya tidak pernah melihat perbedaan baik dari segi kecepatan maupun rencana eksekusi - dalam semua kasus, COUNT
ditangani dengan melakukan pemindaian indeks berkerumun -> yaitu memindai seluruh tabel, pada dasarnya. Jika ada indeks non-cluster yang terlibat, maka pemindaian ada pada indeks itu - bahkan ketika melakukan SELECT COUNT(*)
!
Tampaknya tidak ada perbedaan dalam hal kecepatan atau pendekatan bagaimana hal-hal itu dihitung - untuk menghitung semuanya, SQL Server hanya perlu memindai seluruh tabel - titik.
Pengujian dilakukan pada SQL Server 2008 R2 Developer Edition