Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Baris dengan Cekap dalam Jadual Pangkalan Data Sangat Besar?

Bagaimanakah Saya Boleh Mengira Baris dengan Cekap dalam Jadual Pangkalan Data Sangat Besar?

Linda Hamilton
Linda Hamiltonasal
2025-01-14 17:01:45656semak imbas

How Can I Efficiently Count Rows in Extremely Large Database Tables?

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.
  • Menggunakan pembahagian jadual boleh meningkatkan prestasi COUNT(*) pada jadual yang sangat besar.
  • Jika jadual dikemas kini dengan kerap, bilangan baris yang diperoleh daripada 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn