Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
SQL Server'da belirtilen bir tablo ve sütunda bir uzamsal indeks oluşturur. Tabloda veri olmadan önce bir indeks oluşturulabilir. İndeksler, nitelikli bir veritabanı adı belirtilerek başka bir veritabanındaki tablolar veya görünümler üzerinde oluşturulabilir. Mekânsal indeksler, tablonun kümelenmiş bir birincil anahtara sahip olmasını gerektirir. Uzamsal dizinler dizinlenmiş görünümlerde belirtilemez. Uzamsal dizinler hakkında bilgi için bkz . Uzamsal Dizinlere Genel Bakış.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE SPATIAL INDEX index_name
ON <object> ( spatial_column_name )
{
<geometry_tessellation> | <geography_tessellation>
}
[ ON { filegroup_name | "default" } ]
[;]
<object> ::=
{ database_name.schema_name.table_name | schema_name.table_name | table_name }
<geometry_tessellation> ::=
{
<geometry_automatic_grid_tessellation>
| <geometry_manual_grid_tessellation>
}
<geometry_automatic_grid_tessellation> ::=
{
[ USING GEOMETRY_AUTO_GRID ]
WITH (
<bounding_box>
[ [,] <tessellation_cells_per_object> [ ,...n] ]
[ [,] <spatial_index_option> [ ,...n] ]
)
}
<geometry_manual_grid_tessellation> ::=
{
[ USING GEOMETRY_GRID ]
WITH (
<bounding_box>
[ [,]<tessellation_grid> [ ,...n] ]
[ [,]<tessellation_cells_per_object> [ ,...n] ]
[ [,]<spatial_index_option> [ ,...n] ]
)
}
<geography_tessellation> ::=
{
<geography_automatic_grid_tessellation> | <geography_manual_grid_tessellation>
}
<geography_automatic_grid_tessellation> ::=
{
[ USING GEOGRAPHY_AUTO_GRID ]
[ WITH (
[ [,] <tessellation_cells_per_object> [ ,...n] ]
[ [,] <spatial_index_option> ]
) ]
}
<geography_manual_grid_tessellation> ::=
{
[ USING GEOGRAPHY_GRID ]
[ WITH (
[ <tessellation_grid> [ ,...n] ]
[ [,] <tessellation_cells_per_object> [ ,...n] ]
[ [,] <spatial_index_option> [ ,...n] ]
) ]
}
<bounding_box> ::=
{
BOUNDING_BOX = ( {
xmin, ymin, xmax, ymax
| <named_bb_coordinate>, <named_bb_coordinate>, <named_bb_coordinate>, <named_bb_coordinate>
} )
}
<named_bb_coordinate> ::= { XMIN = xmin | YMIN = ymin | XMAX = xmax | YMAX=ymax }
<tessellation_grid> ::=
{
GRIDS = ( { <grid_level> [ ,...n ] | <grid_size>, <grid_size>, <grid_size>, <grid_size> }
)
}
<tessellation_cells_per_object> ::=
{
CELLS_PER_OBJECT = n
}
<grid_level> ::=
{
LEVEL_1 = <grid_size>
| LEVEL_2 = <grid_size>
| LEVEL_3 = <grid_size>
| LEVEL_4 = <grid_size>
}
<grid_size> ::= { LOW | MEDIUM | HIGH }
<spatial_index_option> ::=
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = OFF
| STATISTICS_NORECOMPUTE = { ON | OFF }
| DROP_EXISTING = { ON | OFF }
| ONLINE = OFF
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| DATA_COMPRESSION = { NONE | ROW | PAGE }
}
Arguments
index_name
İndeksin adıdır. Indeks isimleri bir tablo içinde benzersiz olmalı, ancak veritabanı içinde benzersiz olmak zorunda değildir. Dizin adları tanımlayıcıların kurallarına uymalıdır.
ON <Nesne> ( spatial_column_name )
İndeksin oluşturulacağı nesneyi (veritabanı, şema veya tablo) ve uzamsal sütunun adını belirtir.
spatial_column_name , indeksin dayandığı uzamsal sütunu belirtir. Tek bir uzamsal indeks tanımında yalnızca bir uzamsal sütun belirtilebilir; Ancak, bir geometri veya coğrafya sütununda birden fazla uzamsal indeks oluşturulabilir.
KULLAN -ARAK
Mekânsal indeks için mozelasyon şemasını gösterir. Bu parametre, aşağıdaki tabloda gösterilen tipe özgü değeri kullanır:
| Veri tipi sütun | Tesselasyon şeması |
|---|---|
| geometry | GEOMETRY_GRID |
| geometry | GEOMETRY_AUTO_GRID |
| geography | GEOGRAPHY_GRID |
| geography | GEOGRAPHY_AUTO_GRID |
Bir mekânsal indeks yalnızca geometri veyacoğrafya tipli bir sütunda oluşturulabilir, aksi takdirde hata oluşur. Belirli bir tür için geçersiz bir parametre geçilirse, hata oluşur.
SQL Server'ın tessellasyonu nasıl uyguladığına dair bilgi için Mekansal İndeksler Genel Bakış'a bakınız.
ON filegroup_name
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
Belirtilen dosya grubunda belirtilen dizini oluşturur. Eğer konum belirtilmemişse ve tablo bölümlenmemişse, indeks altta yatan tablo ile aynı dosya grubunu kullanır. Dosya grubu zaten var olmalıdır.
ON "varsayılan"
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
Varsayılan dosya grubunda belirtilen dizini oluşturur.
Bu bağlamda varsayılan terim bir anahtar kelime değildir. Bu, varsayılan dosya grubu için bir tanımlayıcıdır ve ON "default" veya ON [default] gibi sınırlandırılmalıdır. "Varsayılan" belirtilmişse, mevcut oturum için QUOTED_IDENTIFIER seçeneği AKONMUŞ olmalıdır. Bu varsayılan ayardır. Daha fazla bilgi için bkz . SET QUOTED_IDENTIFIER (Transact-SQL).
<nesne>::=
Tam nitelikli veya tam nitelikli olmayan nesne indekslenecek mi?
database_name
Veritabanının adı.
schema_name
Tablonun ait olduğu şemanın adıdır.
table_name
Indekslenecek tablonun adı mı?
Azure SQL Database üç bölümlü isim formatını database_name. [schema_name].object_name database_name mevcut veritabanı ya da database_name tempdb olduğunda ve object_name # ile başlarsa.
KULLANIM seçenekleri
GEOMETRY_GRID
Kullandığınız geometri ızgara tessellasyon şemasını belirtir. GEOMETRY_GRID yalnızca geometri veri tipinin bir sütununda belirtilebilir. GEOMETRY_GRID, mozelasyon şemasının manuel olarak ayarlanmasına olanak tanır.
GEOMETRY_AUTO_GRID
Şunlara uygulanır: SQL Server (SQL Server 2012 (11.x) ve sonrası) ve Azure SQL Database
Yalnızca geometri veri tipinin bir sütununda belirtilebilir. Bu veri tipi için varsayılan durumdur ve belirtilmesine gerek yoktur.
GEOGRAPHY_GRID
Coğrafya ızgara tessellasyon şemasını belirtir. GEOGRAPHY_GRID yalnızca coğrafya veri tipinin bir sütununda belirtilebilir.
GEOGRAPHY_AUTO_GRID
Şunlara uygulanır: SQL Server (SQL Server 2012 (11.x) ve sonrası) ve Azure SQL Database
Yalnızca coğrafya veri tipinin bir sütununda belirtilebilir. Bu veri tipi için varsayılan durumdur ve belirtilmesine gerek yoktur.
WITH seçenekleri
BOUNDING_BOX
Sınırlayıcı kutunun dört koordinatını tanımlayan sayısal bir dörtlü düpel belirtir: alt sol köşedeki x-min ve y-min koordinatları ile sağ üst köşenin x-max ve y-max koordinatları.
xmin
Sınırlayıcı kutunun sol alt köşesinin x-koordinatını belirtir.
ymin
Sınırlayıcı kutunun sol alt köşesinin y-koordinatını belirtir.
xmax
Sınırlayıcı kutunun sağ üst köşesinin x-koordinatını belirtir.
ymax
Sınırlayıcı kutunun sağ üst köşesinin y-koordinatını belirtir.
XMIN = xmin
Sınırlayıcı kutunun sol alt köşesinin x-koordinatı için özellik adını ve değerini belirtir.
YMIN =ymin
Sınırlayıcı kutunun sol alt köşesinin y-koordinatı için özellik adını ve değerini belirtir.
XMAX =xmax
Sınırlayıcı kutunun sağ üst köşesinin x-koordinatı için özellik adını ve değerini belirtir.
YMAX = ymax
Sınırlayıcı kutunun sağ üst köşesinin y-koordinatı için özellik adını ve değerini belirtir
Uyarı
Sınırlayıcı kutu koordinatları yalnızca USING GEOMETRY_GRID maddesi içinde geçerlidir.
xmaxxmin'den büyük olmalı ve ymax ise ymin'den büyük olmalı. Geçerli herhangi bir float değer temsili belirtebilirsiniz, şöyle ki: xmax>xmin ve ymax>ymin. Aksi takdirde uygun hatalar ortaya çıkar.
Varsayılan değerler yoktur.
Sınırlayıcı kutu özellik adları, veritabanı derlemesinden bağımsız olarak büyük harf duyarsızlığına sahiptir.
Mülk isimlerini belirtmek için her birini bir kez ve sadece bir kez belirtmeniz gerekir. Bunları istediğiniz sırayla belirtebilirsiniz. Örneğin, aşağıdaki cümleler eşdeğerdir:
BOUNDING_BOX =(XMIN =xmin, YMIN =ymin, XMAX =xmax, YMAX =ymax )
BOUNDING_BOX =(XMIN =xmin, XMAX =xmax, YMIN =ymin, YMAX =ymax)
IZGARALAR
Bir mozelasyon şemasının her seviyesinde ızgara yoğunluğunu tanımlar. GEOMETRY_AUTO_GRID ve GEOGRAPHY_AUTO_GRID seçildiğinde bu seçenek devre dışı bırakılır.
Tessellasyon hakkında bilgi için Mekânsal İndeksler Genel Bakış'a bakınız.
GRIDS parametreleri aşağıdaki gibidir:
LEVEL_1
Birinci seviye (üst) ızgarayı belirtir.
LEVEL_2
İkinci seviye ızgarayı belirtir.
LEVEL_3
Üçüncü seviye ızgarayı belirtir.
LEVEL_4
Dördüncü seviye ızgarayı belirtir.
DÜŞÜK
Belirli bir seviyede ızgara için mümkün olan en düşük yoğunluğu belirtir. LOW 16 hücreye eşittir (4x4 ızgara).
ORTA
Belirli bir seviyede ızgaranın orta yoğunluğunu belirtir. MEDIUM 64 hücreye eşittir (8x8 ızgara).
HIGH
Belirli bir seviyede ızgara için mümkün olan en yüksek yoğunluğu belirtir. HIGH, 256 hücreye denk gelir (16x16 ölçümde bir ızgara).
Uyarı
Seviye adlarını kullanmak, seviyeleri istediğiniz sırayla belirtmenize ve seviyeleri çıkarmanıza olanak tanır. Herhangi bir seviye için bu adı kullanıyorsanız, belirttiğiniz diğer seviyelerin adını kullanmalısınız. Bir seviyeyi atlarsanız, yoğunluğu ORTA olarak varsayılan olur.
Uyarı
Geçersiz bir yoğunluk belirtilirse, bir hata oluşur.
CELLS_PER_OBJECT =n
Tessellasyon süreciyle indeksteki tek bir uzaysal nesne için kullanılabilecek nesne başına kullanılabilecek tessellasyon hücresi sayısını belirtir.
n, 1 ile 8192 arasında herhangi bir tam sayı olabilir, dahil. Geçersiz bir sayı geçersiz veya sayı, belirtilen tessellasyon için maksimum hücre sayısından büyükse, hata oluşur.
CELLS_PER_OBJECT aşağıdaki varsayılan değerlere sahiptir:
| KULLANMA seçeneği | Nesne Başına Varsayılan Hücreler |
|---|---|
| GEOMETRY_GRID | 16 |
| GEOMETRY_AUTO_GRID | 8 |
| GEOGRAPHY_GRID | 16 |
| GEOGRAPHY_AUTO_GRID | 12 |
En üst düzeyde, bir nesne n ile belirtilen hücreden daha fazla hücreyi kapsa, indeksleme tam bir üst seviye tessellasyon sağlamak için gerekli kadar hücre kullanır. Bu durumlarda, bir nesne belirtilen hücre sayısından fazla alabilir. Bu durumda, maksimum sayı, en üst seviye ızgara tarafından üretilen hücre sayısıdır ve bu yoğunluğa bağlıdır.
CELLS_PER_OBJECT değeri, nesne başına hücre testi kuralı tarafından kullanılır. Mozelasyon kuralları hakkında bilgi için Mekânsal İndeksler Genel Bakış'a bakınız.
PAD_INDEX = { AÇIK | KAPALI }
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
Dizin doldurmayı belirtir. Varsayılan değer KAPALI'dır.
ON
Fillfactor tarafından belirtilen boş alan yüzdesinin indeksin orta seviye sayfalarına uygulandığını gösterir.
KAPALı veya doldurma faktörü belirtilmemiştir
Orta seviye sayfaların neredeyse kapasiteye kadar dolu olduğunu, aradaki sayfalardaki anahtarlar seti göz önüne alındığında indeksin sahip olabileceği maksimum boyutta en az bir satır için yeterli alan bıraktığını gösterir.
PAD_INDEX seçeneği yalnızca FILLFACTOR belirtildiğinde faydalıdır, çünkü PAD_INDEX FILLFACTOR tarafından belirtilen yüzdeyi kullanır. FILLFACTOR için belirtilen yüzde bir satır için yeterli değilse, Veritabanı Motoru dahili olarak yüzdeyi geçersiz kılarak minimumu sağlar. Bir ara indeks sayfasındaki satır sayısı, fillfactor'un değeri ne kadar düşük olursa olsun asla ikiden az değildir.
FILLFACTOR = doldurucu
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
Veritabanı Altyapısı'nın dizin oluşturma veya yeniden oluşturma sırasında her dizin sayfasının yaprak düzeyini ne kadar tam yapması gerektiğini gösteren bir yüzde belirtir. Doldurma faktörü 1'den 100'e kadar tam sayı değeri olmalıdır. Varsayılan değer 0'dır. Eğer doldurma faktörü 100 veya 0 ise, Veritabanı Motoru yaprak sayfaları kapasitesine kadar dolu indeksler oluşturur.
Uyarı
0 ve 100 dolgu faktörü değerleri her açıdan aynıdır.
FILLFACTOR ayarı yalnızca indeks oluşturulduğunda veya yeniden oluşturulduğunda geçerlidir. Veritabanı Motoru, sayfalarda belirtilen boş alan yüzdesini dinamik olarak tutmaz. Doldurma faktörü ayarını görüntülemek için sys.indexes katalog görünümünü kullanın.
Önemli
100'den az FILLFACTOR ile kümelenmiş bir indeks oluşturmak, veri depolama alanını etkiler çünkü Veritabanı Motoru kümelenmiş indeks oluştururken veriyi yeniden dağıtır.
Daha fazla bilgi için bkz. Diziniçin Dolgu Faktörü Belirtme.
SORT_IN_TEMPDB = { AÇIK | KAPALI }
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
Geçici sıralama sonuçlarını tempdb'de saklayıp saklamayacağını belirtir. Varsayılan değer KAPALI'dır.
ON
İndeks oluşturmak için kullanılan ara sıralama sonuçları tempdb'de saklanır. Bu, tempdb kullanıcı veritabanından farklı bir disk setindeyse indeks oluşturma süresini azaltabilir. Ancak bu, dizin derlemesi sırasında kullanılan disk alanı miktarını artırır.
OFF
Ara sıralama sonuçları dizinle aynı veritabanında depolanır.
İndeks oluşturmak için kullanıcı veritabanında gereken alana ek olarak, tempdb ara sıralama sonuçlarını tutmak için yaklaşık aynı miktarda ek alana sahip olmalıdır. Daha fazla bilgi için SORT_IN_TEMPDB Endeks Seçeneği'ne bakınız.
IGNORE_DUP_KEY =KAPALI
Mekânsal indeksler için etkisi yoktur çünkü indeks tipi asla benzersiz değildir. Bu seçeneği ON olarak ayarlamayın, aksi takdirde hata oluşur.
STATISTICS_NORECOMPUTE = { AÇIK | KAPALI
Dağılım istatistiklerinin yeniden hesaplanıp hesaplanmadığını belirtir. Varsayılan değer KAPALI'dır.
ON
Güncel olmayan istatistikler otomatik olarak yeniden derlenmez.
OFF
Otomatik istatistik güncelleştirme etkinleştirildi.
Otomatik istatistikler güncellemesini geri yüklemek için STATISTICS_NORECOMPUTE KAPALI konumuna getirin veya NORECOMPUTE maddesi olmadan İSTATÎSTÎKLERİ GÜNCELLEME çalıştırın.
Önemli
Dağıtım istatistiklerinin otomatik yeniden hesaplanmasını devre dışı bırakmak, sorgu optimizatorunun tablo içeren sorgular için optimal yürütme planlarını seçmesini engelleyebilir.
DROP_EXISTING = { AÇIK | KAPALI }
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
Adı verilen, önceden var olan uzamsal indeksin düşürülüp yeniden oluşturulduğunu belirtir. Varsayılan değer KAPALI'dır.
ON
Mevcut dizin bırakılır ve yeniden oluşturulur. Belirtilen dizin adı şu anda var olan bir dizinle aynı olmalıdır; ancak dizin tanımı değiştirilebilir. Örneğin, farklı sütunlar, sıralama düzeni, bölüm düzeni veya dizin seçenekleri belirtebilirsiniz.
OFF
Belirtilen dizin adı zaten varsa bir hata görüntülenir.
Indeks türü DROP_EXISTING kullanılarak değiştirilemez.
ÇEVRIMIÇI =KAPALI
Alt tabelaların ve ilgili indekslerin indeks işlemi sırasında sorgular ve veri değişikliği için kullanılamayacağını belirtir. SQL Server'ın bu sürümünde, çevrimiçi indeks derlemeleri uzamsal indeksler için desteklenmemektedir. Bu seçenek, uzamsal bir indeks için ON olarak ayarlandığında, bir hata oluşur. Ya ONLINE seçeneğini çıkar ya da ONLINE'ı KAPALI olarak ayar.
Mekânsal indeks oluşturan, yeniden inşa eden veya düşüren çevrimdışı bir indeks işlemi, tabloda bir Şema modifikasyonu (Sch-M) kilidi elde eder. Bu, işlem süresi boyunca temel alınan tabloya tüm kullanıcı erişimini engeller.
Uyarı
Çevrimiçi indeks işlemleri, SQL Server'ın her sürümünde mevcut değildir. SQL Server sürümleri tarafından desteklenen özelliklerin listesi için bkz. SQL Server 2016 Sürümleri Tarafından Desteklenen Özellikler.
ALLOW_ROW_LOCKS = { AÇIK | KAPALI }
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
Satır kilitlerine izin verilip verilmeyeceğini belirtir. Varsayılan AÇIK.
ON
Dizine erişirken satır kilitlerine izin verilir. Veritabanı Altyapısı satır kilitlerinin ne zaman kullanılacağını belirler.
OFF
Satır kilitleri kullanılmaz.
ALLOW_PAGE_LOCKS = { AÇIK | KAPALI }
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
Sayfa kilitlerine izin verilip verilmeyeceğini belirtir. Varsayılan AÇIK.
ON
Dizine erişirken sayfa kilitlerine izin verilir. Veritabanı Altyapısı, sayfa kilitlerinin ne zaman kullanılacağını belirler.
OFF
Sayfa kilitleri kullanılmaz.
MAXDOP =max_degree_of_parallelism
Şunlar için geçerlidir: SQL Server (SQL Server 2008 (10.0.x) ve sonrası) ve Azure SQL Database
max degree of parallelism Dizin işlemi süresi boyunca yapılandırma seçeneğini geçersiz kılar. Paralel plan yürütmesinde kullanılan işlemci sayısını sınırlamak için MAXDOP kullanın. Maksimum değer 64 işlemcidir.
Önemli
MAXDOP seçeneği sözdizimi olarak desteklense de, CREATE SPATIAL INDEX şu anda her zaman yalnızca tek bir işlemci kullanır.
max_degree_of_parallelism olabilir:
1
Paralel plan oluşturmayı bastırır.
>1
Paralel dizin işleminde kullanılan işlemci sayısı üst sınırını, geçerli sistem iş yüküne göre belirtilen sayıda veya daha az işlemciyle kısıtlar.
0 (varsayılan)
Geçerli sistem iş yüküne göre gerçek işlemci sayısını veya daha azını kullanır.
Daha fazla bilgi için bkz. Paralel Dizin İşlemlerini Yapılandırma.
Uyarı
Paralel dizin işlemleri Microsoft SQL Server'ın her sürümünde kullanılamaz. SQL Server sürümleri tarafından desteklenen özelliklerin listesi için bkz. SQL Server 2016 Sürümleri Tarafından Desteklenen Özellikler.
DATA_COMPRESSION = {HİÇ | ROW | SAYFA}
Şunlara uygulanır: SQL Server (SQL Server 2012 (11.x) ve sonrası) ve Azure SQL Database
Dizin tarafından kullanılan veri sıkıştırma düzeyini belirler.
HİÇBİRİ
Dizin tarafından veriler üzerinde sıkıştırma kullanılmaz
Sıra
Dizin tarafından veriler üzerinde kullanılan satır sıkıştırma
PAGE
Dizin tarafından verilerde kullanılan sayfa sıkıştırma
Açıklamalar
Her seçenek, CREATE SPATIAL INDEX ifadesi başına yalnızca bir kez belirtilebilir. Herhangi bir seçeneğin yinelenmesi hataya neden olur.
Bir tablodaki her uzamsal sütunda en fazla 249 uzamsal indeks oluşturabilirsiniz. Örneğin, belirli bir uzamsal sütunda birden fazla uzamsal indeks oluşturmak, farklı tesselasyon parametrelerini tek bir sütunda indekslemek için faydalı olabilir.
Önemli
Mekânsal endeks oluşturmada başka birçok kısıtlama da vardır. Daha fazla bilgi için Mekânsal İndeksler Genel Bakış'a bakınız.
Bir indeks derlemesi, mevcut süreç paralelliğini kullanamaz.
Mekansal indekslerde desteklenen yöntemler
Belirli koşullar altında, mekânsal indeksler bir dizi küme odaklı geometri yöntemini destekler. Daha fazla bilgi için Mekânsal İndeksler Genel Bakış'a bakınız.
Mekansal indeksler ve bölümleme
Varsayılan olarak, bölümlenmiş bir tabloda mekânsal indeks oluşturulursa, indeks tablonun bölme şemasına göre bölünür. Bu, indeks verisinin ve ilgili satırın aynı bölümde saklanmasını sağlar.
Bu durumda, temel tablonun bölme şemasını değiştirmek için, temel tabloyu yeniden bölümleyebilmek için mekânsal indeksin kaldırılması gerekir. Bu kısıtlamadan kaçınmak için, uzaysal indeks oluştururken "ON dosya grubu" seçeneğini belirleyebilirsiniz. Daha fazla bilgi için, bu konunun ilerleyen bölümlerinde "Mekansal İndeksler ve Dosya Grupları" bölümüne bakınız.
Mekânsal indeksler ve dosya grupları
Varsayılan olarak, mekânsal indeksler, indeksin belirtildiği tabloyla aynı dosya gruplarına bölünür. Bu, dosya grubu spesifikasyonu kullanılarak geçersiz hale getirilebilir:
[ ON { filegroup_name | "default" } ]
Bir mekânsal indeks için bir dosya grubu belirlerseniz, indeks o dosya grubuna yerleştirilir, tablonun bölümleme şeması ne olursa olsun.
Mekânsal indeksler için katalog görünümleri
Aşağıdaki katalog görünümleri mekânsal indekslere özgüdür:
sys.spatial_indexes
Mekânsal indekslerin ana indeks bilgisini temsil eder.
sys.spatial_index_tessellations
Her bir uzamsal indeksin testselasyon şeması ve parametreleri hakkında bilgileri temsil eder.
İndeks oluşturma hakkında ek açıklamalar
İndeks oluşturma hakkında daha fazla bilgi için CREATE INDEX (Transact-SQL) içindeki "Açıklamalar" bölümüne bakınız.
Permissions
Kullanıcının tablo veya görünüm üzerinde iznine sahip ALTER olması ya da sysadmin sabit sunucu rolünün veya db_ddladmin sabit db_owner veritabanı rollerinin bir üyesi olmalıdır.
Örnekler
A. Bir geometri sütununda mekansal indeks oluşturmak
Aşağıdaki örnek, geometri tipi bir sütun içeren bir tablo oluştururSpatialTable. geometry_col Örnek daha sonra bir uzamsal indeks oluşturur, SIndx_SpatialTable_geometry_col1, üzerinde geometry_col. Örnek, varsayılan tessellasyon şemasını kullanır ve sınırlayıcı kutuyu belirtir.
CREATE TABLE SpatialTable(id int primary key, geometry_col geometry);
CREATE SPATIAL INDEX SIndx_SpatialTable_geometry_col1
ON SpatialTable(geometry_col)
WITH ( BOUNDING_BOX = ( 0, 0, 500, 200 ) );
B. Bir geometri sütununda mekansal indeks oluşturmak
Aşağıdaki örnek, tabloda SpatialTable ikinci bir uzamsal indeks oluşturur, SIndx_SpatialTable_geometry_col2, geometry_col . Örnek, tessellasyon şeması olarak belirtir GEOMETRY_GRID . Örnek ayrıca sınırlayıcı kutu, farklı ızgara seviyelerinde farklı yoğunluklar ve nesne başına 64 hücre belirtir. Örnek ayrıca indeks dolgusunu da 'ye ONayarlıyor.
CREATE SPATIAL INDEX SIndx_SpatialTable_geometry_col2
ON SpatialTable(geometry_col)
USING GEOMETRY_GRID
WITH (
BOUNDING_BOX = ( xmin=0, ymin=0, xmax=500, ymax=200 ),
GRIDS = (LOW, LOW, MEDIUM, HIGH),
CELLS_PER_OBJECT = 64,
PAD_INDEX = ON );
C. Bir geometri sütununda mekansal indeks oluşturmak
Aşağıdaki örnek, tabloda SpatialTable üçüncü bir uzamsal indeks oluşturur, SIndx_SpatialTable_geometry_col3, .geometry_col Örnek, varsayılan tessellasyon şemasını kullanır. Örnek, sınırlayıcı kutuyu belirtir ve üçüncü ile dördüncü seviyelerde farklı hücre yoğunlukları kullanırken, nesne başına varsayılan hücre sayısını kullanır.
CREATE SPATIAL INDEX SIndx_SpatialTable_geometry_col3
ON SpatialTable(geometry_col)
WITH (
BOUNDING_BOX = ( 0, 0, 500, 200 ),
GRIDS = ( LEVEL_4 = HIGH, LEVEL_3 = MEDIUM ) );
D. Mekânsal indekslere özgü bir seçeneğin değiştirilmesi
Aşağıdaki örnek, önceki örnekte oluşturulan uzamsal indeks, SIndx_SpatialTable_geography_col3, yeni LEVEL_3 bir yoğunluk belirterek DROP_EXISTING = ON olarak yeniden inşa edilir.
CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col3
ON SpatialTable(geography_col)
WITH ( BOUNDING_BOX = ( 0, 0, 500, 200 ),
GRIDS = ( LEVEL_3 = LOW ),
DROP_EXISTING = ON );
E. Bir coğrafya sütununda mekânsal indeks oluşturmak
Aşağıdaki örnek, coğrafya tipi bir sütun içeren bir tablo oluştururSpatialTable2. geography_col Örnek daha sonra bir uzamsal indeks oluşturur, SIndx_SpatialTable_geography_col1, üzerinde geography_col. Örnek, GEOGRAPHY_AUTO_GRID tessellasyon şemasının varsayılan parametreleri değerlerini kullanır.
CREATE TABLE SpatialTable2(id int primary key, object GEOGRAPHY);
CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col1
ON SpatialTable2(object);
Uyarı
Coğrafya ızgara indeksleri için sınırlayıcı kutu belirtilemez.
F. Bir coğrafya sütununda mekânsal indeks oluşturmak
Aşağıdaki örnek, tabloda SpatialTable2 ikinci bir uzamsal indeks oluşturur, SIndx_SpatialTable_geography_col2, geography_col . Örnek, tessellasyon şeması olarak belirtir GEOGRAPHY_GRID . Örnek ayrıca farklı seviyelerde farklı ızgara yoğunluklarını ve her nesne için 64 hücreyi belirtir. Örnek ayrıca indeks dolgusunu da 'ye ONayarlıyor.
CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col2
ON SpatialTable2(object)
USING GEOGRAPHY_GRID
WITH (
GRIDS = (MEDIUM, LOW, MEDIUM, HIGH ),
CELLS_PER_OBJECT = 64,
PAD_INDEX = ON );
G. Bir coğrafya sütununda mekânsal indeks oluşturmak
Örnek daha sonra tabloda üçüncü bir uzamsal indeks oluşturur, SIndx_SpatialTable_geography_col3, geography_colSpatialTable2 . Örnek, varsayılan tessellasyon şeması olan GEOGRAPHY_GRID ve varsayılan CELLS_PER_OBJECT değeri (16) kullanır.
CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col3
ON SpatialTable2(object)
WITH ( GRIDS = ( LEVEL_3 = HIGH, LEVEL_2 = HIGH ) );
Ayrıca bakınız
ALTER INDEX (Transact-SQL)
İNDEKS OLUŞTUR (Transact-SQL)
BÖLÜM FONKSİYONU OLUŞTUR (Transact-SQL)
BÖLÜM DÜZENİ OLUŞTURMA (Transact-SQL)
İSTATİSTİK OLUŞTUR (Transact-SQL)
TABLO OLUŞTUR (Transact-SQL)
Veri Türleri (Transact-SQL)
DBCC SHOW_STATISTICS (Transact-SQL)
DÜŞÜŞ İNDEKSİ (Transact-SQL)
OLAY VERILERI (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.indexes (Transact-SQL)
sys.spatial_index_tessellations (Transact-SQL)
sys.spatial_indexes (Transact-SQL)
Uzamsal Dizinlere Genel Bakış