SORU
13 NİSAN 2009, PAZARTESİ


SQL Server dizin, artan veya azalan, ne fark eder?

MS SQL Server veya sütun numarası (2005 versiyonunu kullanıyorum) üzerinde bir dizin oluşturduğunuzda, her bir sütun üzerinde dizin artan azalan veya belirtebilirsiniz. Zor zamanlar, bu seçimi neden burada anlamakta güçlük çekiyorum. İkili sıralama teknikleri kullanarak, bir arama her iki şekilde de aynı hızda olmaz mı? Ne fark ben tercih eder?

CEVAP
13 NİSAN 2009, PAZARTESİ


Bu öncelikle bileşik endeksleri ile birlikte kullanıldığında önemli:

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

ikisi için de kullanılabilir:

SELECT  *
FROM    mytable
ORDER BY
        col1, col2 DESC

ya da:

SELECT  *
FROM    mytable
ORDER BY
        col1 DESC, col2

ama değil:

SELECT  *
FROM    mytable
ORDER BY
        col1, col2

Tek bir sütun üzerinde bir dizin verimli bir şekilde her iki yönde de sıralama için kullanılabilir.

Blogumda ayrıntılı bilgi için: makaleye bakın

Güncelleme:

Aslında, bu o kadar açık değil olsa bile tek sütun bir dizin için önemli olabilir.

Kümelenmiş bir tablo bir sütun üzerinde bir dizin düşünün

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

col1 dizin satır başvuruları ile birlikte col1 değerleri sipariş tutar.

Tablo kümelenmiş olduğu satır için başvuru aslında pk değerleri. Ayrıca col1 her bir değeri içinde kalırlar.

Bu Endeksin bırakır aslında ** 17, ve bu sorgu üzerinde sıralanır anlamına gelir:

SELECT  col1, pk
FROM    mytable
ORDER BY
        col1, pk

sıralama ihtiyacı yok.

Eğer aşağıdaki gibi indeks oluşturmak:

CREATE INDEX ix_mytable_col1_desc ON mytable (col1 DESC)

col1 değerleri azalan, ama col1 Her bir değeri içinde pk değerleri sıralanır yükseliyor. sıralanır , sonra

Bu aşağıdaki sorgu anlamına gelir:

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

ix_mytable_col1_desc tarafından servis edilebilir ama ix_mytable_col1 tarafından değil.

Diğer bir deyişle, herhangi bir tabloyu CLUSTERED INDEX oluşturan sütunlar her zaman o masada başka bir dizinin sonunda sütunlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BgirlNilaya

    BgirlNilaya

    29 EKİM 2008
  • Caina Mondo Zine

    Caina Mondo

    13 EKİM 2007
  • WestsideMrArO

    WestsideMrAr

    6 EKİM 2010