columnstore Index (Transact-sql) oluştur

Columnstore dizin üzerinde belirtilen bir tablo oluşturur. Columnstore dizin sıkıştırılmış kümelenmemiş dizin türüdür. Columnstore dizin tablo başına sınırı yoktur. Tabloda veri önce dizin oluşturulabilir. Tablo columnstore dizini güncelleştirilemiyor. Columnstore dizinler hakkında daha fazla bilgi için bkz: Sütun Deposu Dizinleri. Columnstore dizin yapısı hakkında daha fazla bilgi için bkz: Sütun Deposu Dizinleri.

[!NOT]

İlişkisel bir dizin oluşturma hakkında daha fazla bilgi için bkz: Index (Transact-sql) oluştur. xml dizin oluşturma hakkında daha fazla bilgi için bkz: xml Index (Transact-sql) oluştur. Kayma dizin oluşturma hakkında daha fazla bilgi için bkz: KAYMA Index (Transact-sql) oluştur.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

CREATE [ NONCLUSTERED ] COLUMNSTORE INDEX index_name 
    ON <object> ( column  [ ,...n ] )
    [ WITH ( <column_index_option> [ ,...n ] ) ]
    [ ON {
           { partition_scheme_name ( column_name ) } 
           | filegroup_name 
           | "default" 
         }
    ]
[ ; ]

<object> ::=
{
    [database_name. [schema_name ] . | schema_name . ]
     table_name
{

<column_index_option> ::=
{
      DROP_EXISTING = { ON | OFF }
    | MAXDOP = max_degree_of_parallelism
 }

Bağımsız değişkenler

  • KÜMELENDİRİLMEMİŞ
    Mantıksal sıralama tablosu belirtir, columnstore bir dizin oluşturur. Kümelenmiş columnstore dizinler desteklenmez.

  • COLUMNSTORE
    Dizin columnstore dizin olacağını gösterir.

  • index_name
    Dizinin adıdır. Dizin adları bir tablo veya görünüm içinde benzersiz olmalıdır, ancak bir veritabanı içinde benzersiz olmaları gerekmez. Dizin adları kuralları izleyin gerekir tanımlayıcıları.

  • column
    Dizin dayandığı sütun veya sütunları olan. Columnstore dizin 1024 sütunları sınırlıdır.

  • ON partition_scheme_name**(column_name)**
    Bölümlenmiş bir dizin bölümleri olan eşlenen filegroups tanımlayan bölüm düzenini belirtir. Bölüm düzeni yürüterek veritabanı içinde varolmalıdır create PARTITION düzeni. column_namehangi karşı bölümlenmiş bir dizin bölümlenmesi sütun belirtir. Bu sütunun veri türü, uzunluk, aynı olmalıdır ve hassas bağımsız bölüm işlev partition_scheme_namekullanıyor. column_nameDizin tanımı sütunlarda sınırlı değildir. Columnstore dizin böldüğünüzde Veritabanı Altyapısızaten belirtilmezse, bölümleme sütununda dizin, bir sütun ekler.

    Eğer partition_scheme_nameya filegroupbelirtilen ve tablo bölümlenmiş, dizin aynı bölümleme sütununda, tablo kullanarak aynı bölüm düzenini yerleştirilir.

    Dizinler bölümleme hakkında daha fazla bilgi için bkz: Bölümlenmiş tablolar ve dizinler.

  • ONfilegroup_name
    Belirtilen dizin belirtilen filegroup oluşturur. Hiçbir konumu belirtilir ve tablo veya görünümü olmayan bölümlenmiş dizini aynı filegroup temel tablo veya Görünüm kullanır. Filegroup önceden mevcut olmalıdır.

  • on "varsayılan''
    Belirtilen dizin varsayılan filegroup oluşturur.

    Bu kapsamda, terim varsayılan bir anahtar kelime değildir. Bu varsayılan filegroup tanımlayıcısı ve, içinde olarak ayrılmış gerekir "varsayılan" ya da on varsayılan**[]**. Eğer "varsayılan" belirtilmişse, quoted_ıdentıfıer seçeneği geçerli oturum için on olmalıdır. Bu, varsayılan ayardır. Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-sql).

<nesne>:: =

Dizin oluşturulacak tam veya nonfully nitelikli nesnedir.

  • database_name
    Veritabanının adıdır.

  • schema_name
    Tablonun ait olduğu şemanın adıdır.

  • table_name
    İndekslenecek tablonun adıdır.

<column_index_option>:: =

Dizin sütun oluştururken kullanılacak seçenekleri saklamak belirtir.

  • DROP_EXISTING
    Belirtir adlı, preexisting dizin bırakılan ve yeniden. Varsayılan değer OFF'tur.

    • ON
      Varolan dizin bırakılan ve yeniden. Belirtilen dizin adı şu anda varolan bir dizini ile aynı olmalıdır; Ancak, Dizin tanımı değiştirilebilir. Örneğin, farklı sütunlar veya dizin seçeneklerini belirtebilirsiniz.
    • OFF
      Belirtilen dizin adı zaten varsa bir hata görüntülenir. DROP_EXISTING kullanarak dizin türü değiştirilemez. Geriye dönük uyumlu sözdiziminde ile DROP_EXISTING DROP_EXISTING ile'için eşdeğerdir = on.
  • MAXDOP =max_degree_of_parallelism
    Geçersiz kılan Maksimum ölçüde parallelism sunucu yapılandırma seçeneği yapılandırmakdizini işlem süresi için yapılandırma seçeneği. Paralel plan yürütmede kullanılan işlemci sayısını sınırlamak için MAXDOP kullanın. En fazla değer 64 işlemcidir.

    max_degree_of_parallelismaşağıdakilerden biri olabilir:

    • 1
      Paralel plan üretimini baskılar.

    • >1
      Paralel dizin işlemi için belirtilen veya geçerli sistem yüküne göre daha az kullanılan işlemci sayısını sınırlar.

    • 0 (varsayılan)
      Geçerli sistem iş yüküne bağlı olarak gerçek işlemci sayısını veya daha azını kullanır.

    Daha fazla bilgi için, bkz. Parallel ındex işlemi yapılandırma.

    [!NOT]

    Paralel dizin işlemleri her Microsoft SQL Server sürümünde bulunmaz. Sürümü tarafından desteklenen özellikleri listesi için SQL Serverbakın SQL Server 2012 Sürümleri Tarafından Desteklenen Özellikler.

Açıklamalar

Dizinler üzerinde geçici bir tablo oluşturulabilir. Tablo bırakılan veya oturumu sona dizinler bırakılır.

Ortak iş veri türlerini bir columnstore dizini dahil edilebilir. Aşağıdaki veri türleri bir columnstore dizini dahil edilebilir.

  • char ve varchar

  • ncharand nvarchar (except varchar(max) and nvarchar(max))

  • decimal(ve numeric) (18 Basamak büyük bir hassasiyetle hariç.)

  • int, bigint, smallint, and tinyint

  • float(vereal)

  • bit

  • money ve smallmoney

  • Tüm tarih ve Saat veri türleri (dışında datetimeoffset2'den büyük ölçekli)

Aşağıdaki veri türlerini columnstore dizininde yer alamaz.

  • binary ve varbinary

  • ntext, text, and image

  • varchar(max) ve nvarchar(max)

  • uniqueidentifier

  • rowversion(vetimestamp)

  • sql_variant

  • decimal(ve numeric) 18 basamak büyük bir hassasiyetle

  • datetimeoffsetÖlçek ile 2'den büyük

  • clr türleri ( hierarchyid ve kayma türleri)

  • xml

Temel kısıtlamalar

Columnstore dizin:

  • Birden fazla 1024 sütun olamaz.

  • Kümelenmiş olamaz. Yalnızca dizinler kümelendirilmemiş columnstore mevcuttur.

  • Benzersiz bir dizin olamaz.

  • Bir görünüm oluşturulamıyor veya görünümü dizine.

  • Seyrek sütun içeremez.

  • Birincil anahtar veya yabancı anahtar olarak davranamaz.

  • Kullanılarak değiştirilemez ALTER INDEXdeyimi. Bırakma ve yerine columnstore dizin yeniden oluşturun. (Sen-ebilmek kullanma ALTER INDEXdevre dışı bırakabilir ve bir columnstore dizini yeniden.)

  • Tarafından ile oluşturulamaz INCLUDEanahtar.

  • İçeremez ASCya DESCdizin sıralama anahtar. Columnstore dizinler sıkıştırma algoritmaları göre sıralanır. Sıralama performans avantajları çoğunu ortadan kaldırabilir.

Columnstore dizinler aşağıdaki özellikleri ile birlikte kullanılamaz:

  • Sayfa ve satır sıkıştırması ve vardecimaldepolama biçimi (bir columnstore dizini zaten farklı bir biçimde sıkıştırılır.)

  • Çoğaltma

  • Değişiklik izleme

  • Değişiklik verilerini yakalama

  • FILESTREAM

Performans yararları ve kısıtlamaları columnstore dizinler hakkında daha fazla bilgi için bkz: Sütun Deposu Dizinleri.

İzinler

Tabloda ALTER izni gerektirir.

Örnekler

A.Basit bir kümelendirilmemiş dizin oluşturma

Aşağıdaki örnek, basit bir tablo ve kümelenmiş bir dizin oluşturur ve columnstore dizin oluşturma sözdizimi gösterilmiştir.

CREATE TABLE SimpleTable
(ProductKey [int] NOT NULL, 
OrderDateKey [int] NOT NULL, 
DueDateKey [int] NOT NULL, 
ShipDateKey [int] NOT NULL);
GO
CREATE CLUSTERED INDEX cl_simple ON SimpleTable (ProductKey);
GO
CREATE NONCLUSTERED COLUMNSTORE INDEX csindx_simple
ON SimpleTable
(OrderDateKey, DueDateKey, ShipDateKey);
GO

CREATE TABLE SimpleTable
(ProductKey [int] NOT NULL, 
OrderDateKey [int] NOT NULL, 
DueDateKey [int] NOT NULL, 
ShipDateKey [int] NOT NULL);
GO
CREATE CLUSTERED INDEX cl_simple ON SimpleTable (ProductKey);
GO
CREATE NONCLUSTERED COLUMNSTORE INDEX csindx_simple
ON SimpleTable
(OrderDateKey, DueDateKey, ShipDateKey);
GO

B.Tüm seçenekleri kullanarak basit bir kümelendirilmemiş dizin oluşturma

Aşağıdaki örnek, basit bir tablo ve kümelenmiş bir dizin oluşturur ve columnstore dizin oluşturma sözdizimi gösterilmiştir.

CREATE NONCLUSTERED COLUMNSTORE INDEX csindx_simple
ON SimpleTable
(OrderDateKey, DueDateKey, ShipDateKey)
WITH (DROP_EXISTING =  ON, 
    MAXDOP = 2)
ON "default"
GO

CREATE NONCLUSTERED COLUMNSTORE INDEX csindx_simple
ON SimpleTable
(OrderDateKey, DueDateKey, ShipDateKey)
WITH (DROP_EXISTING =  ON, 
    MAXDOP = 2)
ON "default"
GO

Bölümlenmiş tabloları kullanarak daha karmaşık bir örnek için bkz: Sütun Deposu Dizinleri.

Ayrıca bkz.

Başvuru

sys.column_store_dictionaries (Transact-sql)

sys.column_store_segments (Transact-sql)

ALTER INDEX (Transact-SQL)

PARTITION FUNCTION (Transact-sql) oluştur

PARTITION düzeni (Transact-sql) oluştur

drop INDEX (Transact-sql)

sys.indexes (Transact-sql)

index_columns (Transact-sql)

Kavramlar

Sütun Deposu Dizinleri

Sütun Deposu Dizinleri