Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara SQL server menghitung perkiraan jumlah baris?

SQL Server membagi setiap indeks menjadi hingga 200 rentang dengan data berikut (dari di sini ):

Biasanya, nilai yang paling banyak diisi masuk ke RANGE_HI_KEY .

Namun, mereka dapat masuk ke dalam jangkauan dan ini dapat menyebabkan distribusi yang tidak seimbang.

Bayangkan data ini (antara lain):

Nilai kunci Jumlah baris

1          1
2          1
3          10000
4          1

SQL Server biasanya membangun dua rentang:1 ke 3 dan 4 ke nilai populasi berikutnya, yang membuat statistik ini:

RANGE_HI_KEY  RANGE_ROWS  EQ_ROWS  AVG_RANGE_ROWS  DISTINCT_RANGE_ROWS
3             2           10000    1               2

, yang berarti ketika mencari, katakanlah, 2 , hanya ada 1 baris dan lebih baik menggunakan akses indeks.

Tetapi jika 3 masuk ke dalam rentang, statistiknya adalah sebagai berikut:

RANGE_HI_KEY  RANGE_ROWS  EQ_ROWS  AVG_RANGE_ROWS  DISTINCT_RANGE_ROWS
4             10002       1        3334            3

Pengoptimal menganggap ada 3334 baris untuk kunci 2 dan akses indeks terlalu mahal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah saya membuat fungsi global di SQL Server?

  2. Bagaimana cara menyisipkan Massal dari ekstensi file XLSX?

  3. Klausa SQL OVER() - kapan dan mengapa ini berguna?

  4. SET QUOTED IDENTIFIER harus AKTIF saat memasukkan catatan

  5. Kiat untuk meningkatkan kinerja DB yang di atas ukuran 40 GB (Sql Server 2005) dan bertambah setiap bulan sekitar 3 GB