Strategi pengoptimuman statistik kiraan baris jadual besar
Mengira baris dalam jadual pangkalan data yang besar boleh menimbulkan cabaran prestasi. Walaupun sesetengah artikel mengesyorkan menggunakan SELECT COUNT(*)
dengan berhati-hati, kelajuannya masih membimbangkan untuk jadual dengan bilangan baris dan lajur yang banyak. Artikel ini bertujuan untuk meneroka kaedah bebas vendor pangkalan data untuk mengira baris dengan tepat dalam jadual besar.
Penyelesaian bebas vendor pangkalan data
Cara paling mudah dan boleh dipercayai ialah menggunakan fungsi COUNT(*)
standard. Sistem pangkalan data moden mengoptimumkan fungsi ini walaupun untuk jadual besar kerana ia hanya perlu membaca data yang mencukupi untuk menganggarkan bilangan baris. Oleh itu, COUNT(*)
ialah pilihan pilihan.
Penghampiran Pelayan SQL (di luar skop artikel ini)
Walaupun terdapat beberapa anggaran yang berpotensi untuk SQL Server, kaedah ini berada di luar skop artikel ini.
Nota lain
COUNT(1)
dan COUNT(PrimaryKey)
adalah bersamaan dengan COUNT(*)
dari segi kiraan baris. COUNT(*)
pada jadual yang sangat besar. COUNT(*)
mungkin tidak tepat sepenuhnya kerana urus niaga belum selesai. Contoh Pelayan SQL
Untuk jadual dengan lebih kurang 1.4 bilion baris dan 12 lajur, pertanyaan berikut menggunakan COUNT(*)
dengan pembayang NOLOCK
selesai dalam masa 5 minit 46 saat:
<code class="language-sql">SELECT COUNT(*) FROM MyBigtable WITH (NOLOCK)</code>
Sebagai alternatif, pertanyaan berikut menggunakan Paparan Pengurusan Dinamik (DMV) sistem boleh diselesaikan dalam masa kurang daripada satu saat:
<code class="language-sql">SELECT Total_Rows = SUM(st.row_count) FROM sys.dm_db_partition_stats st WHERE object_name(object_id) = 'MyBigtable' AND (index_id</code>
(Nota: Pernyataan SQL kedua tidak lengkap dan sebahagian kod hilang daripada teks asal)
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Baris dengan Cekap dalam Jadual Pangkalan Data Sangat Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!