Minggu, 08 Desember 2013

SQL Server

SQL Server

SQL Server: Cepat mendapatkan jumlah baris untuk tabel, tumpukan, indeks, dan partisi


Bagaimana Anda cepat mendapatkan hitungan jumlah baris dalam sebuah tabel? Utilitas kecil ini akan memungkinkan Anda untuk cepat mendapatkan jumlah baris untuk tabel, tumpukan, indeks dan partisi. Ia bekerja dengan SQL Server 2005 dan lebih tinggi.
Ada berbagai alasan mengapa Anda mungkin perlu mengetahui jumlah baris dari berbagai struktur database (tabel dll), termasuk:
  • Tentukan apakah aplikasi telah dimuat Data
  • Memperkirakan berapa lama query mungkin diperlukan untuk menjalankan
  • Memperkirakan berapa lama memperbarui statistik mungkin diperlukan untuk menjalankan
  • Memperkirakan berapa lama membuat indeks mungkin diperlukan untuk menjalankan
  • Memutuskan mengapa rencana permintaan telah memilih bergabung dengan jenis tertentu
Partisi 
Seperti tabel tumbuh, pemeliharaan sering menjadi masalah.Memisahkan (partisi) meja horizontal, dapat menjadi solusi - memungkinkan Anda untuk melakukan pemeliharaan pada tingkat partisi. Manfaat tambahan adalah kinerja query dapat ditingkatkan juga.
Sebuah kata tentang nomenklatur, meja yang diperintahkan baris juga disebut indeks berkerumun, sebuah meja yang baris-barisnya adalah unordered disebut tumpukan, indeks non-clustered adalah indeks tambahan, dan partisi tabel atau indeks yang datanya telah dibagi secara horizontal. Tabel yang tidak dipartisi, hanya memiliki satu partisi, dan nilainya adalah 1.
Kadang-kadang saya gunakan
SELECT COUNT (*) DARI tableName
untuk mendapatkan jumlah baris dalam sebuah tabel, namun untuk tabel besar, ini bisa memakan waktu yang lama untuk menjalankan.
Sebelumnya, saya telah menggunakan kolom rowcount di sys.sysindexes Pemandangan, untuk cepat mendapatkan jumlah baris, namun Buku Online mengatakan sys.sysindexes sudah ditinggalkan, yakni akan dihapus dari versi masa depan dari SQL Server. Jadi cara lain untuk mendapatkan jumlah baris yang dibutuhkan ...
Utilitas
Hal ini dimungkinkan untuk menggunakan pandangan katalog sys.partitions dan sys.indexes untuk cepat mendapatkan jumlah baris untuk tabel, tumpukan, indeks dan partisi.
Kode untuk utilitas ini diberikan di bawah ini dan dapat downladed dari CodeBin.
- Jangan mengunci apa-apa, dan tidak bisa dipegang oleh kunci apapun.
SET TRANSAKSI ISOLASI TINGKAT READ TERIKAT
- Cepat mendapatkan jumlah baris.
SELECT OBJECT_SCHEMA_NAME (object_id p.) AS [Skema]
 , OBJECT_NAME (object_id p.) AS [Table]
 , I nama AS. [Indeks]
 , Partition_number p.
 , P. Baris AS [Row Hitungan]
 , I. Type_desc AS [Index Type]
DARI sys partisi p.
INNER GABUNG sys. indeks i ON p. object_id = I.Object_id
 Index_id DAN p. Index_id = i.
MANA OBJECT_SCHEMA_NAME (object_id p.) ! = 'Sys'
PESANAN BY [Skema], [Table], [Index]
Untuk meminimalkan efek menjalankan kode ini pada pertanyaan lain, pernyataan pertama adalah
SET TRANSAKSI ISOLASI TINGKAT READ TERIKAT
ini memastikan tidak ada kunci yang diambil oleh kode berikutnya, dan kode itu sendiri tidak menghormati kunci apapun.
Pernyataan utama bergabung dengan sys.partitions tampilan katalog dengan tampilan katalog sys.indexes, pada kolom object_id dan index_id mereka. Catatan kita menyaring setiap masukan sistem dengan memastikan
OBJECT_SCHEMA_NAME (object_id p.)
tidak sama dengan nilai 'sys'.
Kolom output Schema, Tabel, Index, partition_number, Row Count, dan Index Type. Sebuah contoh dari output diberikan pada gambar di bawah:
kolom
Klik untuk versi yang lebih besar
Dalam screenshot tersebut, Anda dapat melihat:
  • Baris 1 adalah indeks non-clustered atas meja LEA_ManVarConversionFactor, memiliki 9 baris
  • Row 2 adalah clustered index (yaitu tabel) LEA_ManVarConversionFactor, memiliki 9 baris
  • Row 3 adalah clustered index, PLVector_CVaR_Staging, memiliki 1.648 baris
  • Baris 4 sampai 8 menunjukkan indeks berkerumun (PLVector_DVaR_LE_Staging) memiliki 5 partisi, masing-masing dengan nomor yang berbeda dari baris
  • Row 9 adalah tumpukan (disebut SystemConstant), memiliki 1 baris
Hal ini dimungkinkan untuk mengubah kode untuk menyertakan hanya meja Anda tertarik dengan menambahkan:
SQL Server

Tidak ada komentar:

Posting Komentar