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

Indeks SQL Server - naik atau turun, apa bedanya?

Ini terutama penting bila digunakan dengan indeks komposit:

CREATE INDEX ix_index ON mytable (col1, col2 DESC);

dapat digunakan untuk:

SELECT  *
FROM    mytable
ORDER BY
        col1, col2 DESC

atau:

SELECT  *
FROM    mytable
ORDER BY
        col1 DESC, col2

, tetapi tidak untuk:

SELECT  *
FROM    mytable
ORDER BY
        col1, col2

Indeks pada satu kolom dapat digunakan secara efisien untuk menyortir dalam dua cara.

Lihat artikel di blog saya untuk detailnya:

  • Indeks menurun

Pembaruan:

Faktanya, ini bisa menjadi masalah bahkan untuk indeks kolom tunggal, meskipun tidak begitu jelas.

Bayangkan sebuah indeks pada kolom tabel berkerumun:

CREATE TABLE mytable (
       pk INT NOT NULL PRIMARY KEY,
       col1 INT NOT NULL
)
CREATE INDEX ix_mytable_col1 ON mytable (col1)

Indeks pada col1 menyimpan nilai yang dipesan dari col1 bersama dengan referensi ke baris.

Karena tabel dikelompokkan, referensi ke baris sebenarnya adalah nilai dari pk . Mereka juga diurutkan dalam setiap nilai col1 .

Ini berarti bahwa daun indeks sebenarnya diurutkan pada (col1, pk) , dan kueri ini:

SELECT  col1, pk
FROM    mytable
ORDER BY
        col1, pk

tidak perlu disortir.

Jika kita membuat indeks sebagai berikut:

CREATE INDEX ix_mytable_col1_desc ON mytable (col1 DESC)

, lalu nilai col1 akan diurutkan secara menurun, tetapi nilai pk dalam setiap nilai col1 akan diurutkan secara menaik.

Artinya query berikut:

SELECT  col1, pk
FROM    mytable
ORDER BY
        col1, pk DESC

dapat dilayani oleh ix_mytable_col1_desc tetapi tidak dengan ix_mytable_col1 .

Dengan kata lain, kolom yang membentuk CLUSTERED INDEX di tabel mana pun selalu merupakan kolom akhir dari indeks lain di tabel itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan semua data datagridview ke database sekaligus

  2. Cara Menggunakan Operator ANTARA di SQL Server

  3. 4 Cara untuk Memeriksa Baris Duplikat di SQL Server

  4. Menginstal sampel database AdventureWorks di Microsoft SQL Server 2012

  5. Cara Membuat Database Online Dari Restore Mode di SQL Server