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

Bagaimana indeks Non-Clustered dapat menampilkan kolom yang tidak termasuk dalam indeks?

Jika tabel itu sendiri berkelompok , maka semua indeks sekunder berisi salinan kunci pengelompokan (kunci yang menentukan urutan fisik baris dalam tabel pengelompokan).

Alasannya:baris dalam tabel berkerumun secara fisik disimpan dalam pohon-B (bukan tumpukan tabel), dan oleh karena itu dapat berpindah ketika node B-tree terbelah atau bergabung, sehingga indeks sekunder tidak bisa hanya berisi "penunjuk" baris (karena akan berada dalam bahaya "menggantung" setelah baris bergerak).

Seringkali, hal itu berdampak buruk pada kinerja - kueri melalui indeks sekunder mungkin memerlukan pencarian ganda :

  • Pertama, telusuri indeks sekunder dan dapatkan kunci pengelompokan.
  • Kedua, berdasarkan kunci pengelompokan yang diambil di atas, cari tabel pengelompokan itu sendiri (yaitu B-tree).

Namun, jika yang Anda inginkan hanyalah bidang kunci pengelompokan, hanya pencarian pertama yang diperlukan.

Alias ​​"indeks berkerumun" di bawah MS SQL Server.

Biasanya, tetapi tidak harus PRIMARY KEY di bawah MS SQL Server.

Sangat disayangkan bahwa pengelompokan diaktifkan secara default di bawah MS SQL Server - orang sering membiarkan default tanpa sepenuhnya mempertimbangkan efeknya. Jika pengelompokan tidak sesuai, Anda harus menentukan kata kunci NONCLUSTERED secara eksplisit untuk menonaktifkannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara men-debug SQL Server T-SQL di Visual Studio 2012

  2. Item dengan kunci yang sama telah ditambahkan Kesalahan pada SSRS Saat Mencoba Mengatur Dataset

  3. Cara membaca kunci file konfigurasi dalam prosedur tersimpan SQL Server 2008

  4. Sql mengubah data menjadi satu baris dari beberapa kolom

  5. Bagaimana cara membagi sel tunggal menjadi beberapa kolom di sql server 2008R2?