Kayma dizinler genel bakış
SQL Servermekansal veri ve kayma dizinler destekler. A kayma dizin bir kayma sütun dizin olanak tanıyan uzatılmış dizin türüdür. Gibi bir kayma veri türü, veri içeren bir tablo sütun kayma sütun olduğunu geometryya geography.
Önemli |
---|
Ayrıntılı bir açıklama ve örnekleri kayma dizinler, etkileyen özellikler de dahil olmak üzere, bu sürümdeki yeni uzamsal özelliklerinin beyaz kağıt, indirmek için Yeni mekansal özellikleri SQL Server 2012 yılında. |
Bu Konuda
Kayma dizinler hakkında
Çürüyen dizinli alanı içine bir kılavuz Hierarchy
Mozaik
Tessellation düzenleri
Kayma dizinler tarafından desteklenen yöntemler
Kayma dizinler tarafından desteklenen geometrisi yöntemleri
Kayma dizinler tarafından desteklenen Coğrafya yöntemleri
Kayma dizinler hakkında
Çürüyen dizinli alanı içine bir kılavuz Hierarchy
De SQL Server, kayma dizinler dizinler 2 boyutlu mekansal veri doğrusal sırada b-ağaç temsil etmelidir yani b-ağaçlar, kullanarak inşa. Bu nedenle, önce bir kayma dizin veri okuma SQL Serveralan hiyerarşik bir üniforma ayrışma uygulayan. Dizin oluşturma işlemi çözer dört düzey uzaya Kılavuz hierarchy. Olarak bu düzeyde verilir seviye 1 (üst düzey), Düzey 2, Düzey 3, ve Düzey 4.
Böylece eksiksiz bir kılavuz sonraki düzeyde her üst düzey hücrede seviyesinden her ardışık düzeyi daha da çözer. Belirli bir düzeyde tüm kılavuzlar hücreleri (örneğin, 4 x 4 veya 8 x 8) her iki eksen boyunca aynı sayıda, ve hücreleri tüm bir boyutu vardır.
Bir 4 x 4 ızgara içine ayrışma sağ üst hücre kılavuz Hierarchy her düzeyde aşağıda gösterilmiştir. Gerçekte, tüm hücreleri bu şekilde çürümüş. Böylece, örneğin, bir alan 4 x 4 ızgaraları dört düzeyde çürüyen aslında Toplam 65.536 düzeyinde dört hücre üretir.
[!NOT]
Kayma dizin yazabileceğiniz ayrışma, uygulama verilerini kullanan ölçü birimi bağımsızdır.
Izgara hiyerarşi hücreleri, Hilbert boşluk doldurma eğri bir varyasyon kullanarak doğrusal bir biçimde numaralandırılır. Resimde amacıyla, ancak, bu tartışma row-wise numaralandırma, aslında Hilbert eğrisi tarafından üretilen numaralandırma yerine basit kullanır. Aşağıdaki çizimde, binalar ve sokaklar, temsil eden satırlar temsil eden birkaç çokgenler zaten bir 4 x 4, düzey 1 kılavuz yerleştirilmiştir. Düzey 1 hücreleri 1 ile 16, sol üst hücreden başlayarak numaralanır.
Kılavuz Yoğunluk
Hücre kılavuz eksen boyunca belirler, yoğunluk: büyük sayı, daha yoğun ızgara. Örneğin, bir 8 x 8 kılavuz, (ki 64 hücreler üretir) (hangi 16 hücreleri üreten) 4 x 4 kılavuz yoğun. Kılavuz Yoğunluk düzeyi başına temelinde tanımlanır.
create KAYMA INDEX Transact-SQL deyimini destekler farklı ızgara yoğunlukları farklı düzeylerde belirtmenize olanak tanıyan bir Izgaralar fıkra. Belirli bir düzey kılavuz yoğunluğu, aşağıdaki anahtar kullanılarak belirtilir.
Anahtar Sözcük |
Kılavuz yapılandırma |
Hücre sayısı |
---|---|---|
DÜŞÜK |
4 X 4 |
16 |
ORTA |
8 X 8 |
64 |
YÜKSEK |
16 X 16 |
256 |
De SQL Server, veritabanı uyumluluk düzeyi 100 olarak ayarlanmışsa veya alt, sonra tüm düzeylerdeki orta varsayılandır. Veritabanı uyumluluk düzeyi 110 veya daha yüksek olarak ayarlandığında, varsayılan otomatik Izgara düzeni olur.
Varsayılan olmayan kılavuz yoğunluğu belirterek ayrışma süreci denetleyebilirsiniz. Örneğin, farklı ızgara yoğunlukları farklı düzeylerde dizinli alan ve nesneleri kayma sütun boyutunu temel bir dizin ince ayar için yararlı olabilir.
[!NOT]
Kayma dizin kılavuz densities içinde görünür level_1_grid, level_2_grid, level_3_grid, ve level_4_gridsütunları level_3_grid katalog görünümünde veritabanı uyumluluk düzeyi 100 veya daha düşük olarak ayarlandığında. GEOMETRY_AUTO_GRID/ GEOGRAPHY_AUTO_GRID Tessellation düzeni seçenekleri bu sütunları doldurmak değil. sys.spatial_index_tessellationsKatalog görünümü vardır NULLOtomatik ızgara seçenekleri kullanıldığında bu sütunların değerleri.
Sayfanın Üstü
Mozaik
Dizinli alan bir kılavuz hiyerarşide daha fazla ayrışma sonra kayma dizin kayma sütun, satır tarafından verileri okur. Kayma dizin gerçekleştiren bir kayma nesne (veya örnek) verilerini okuduktan sonra bir tessellation işlem bu nesne için. Tessellation işlemnesne kılavuz dokunduğu ızgara hücreleri bir dizi nesne ilişkilendirerek hiyerarşisinde girdiği (hücreleri dokundu). Kılavuz hierarchy 1 düzeyinde başlayan tessellation işlem gelirleri Etki derecesini elde ilk düzeyi arasında. Potansiyel olarak dört düzeyde, işlemin devam bir seferde bir düzey.
Tessellation işlem çıkış kayma dizin nesnesi için kaydedilen dokundu hücreleri kümesidir. Kaydedilen bu hücrelere bakarak kayma dizin, diğer nesnelere göre de dizinde depolanan kayma sütunundaki alanı nesne bulabilirsiniz.
Tessellation kuralları
Bir nesne için kaydedilen dokundu hücre sayısını sınırlamak için tessellation işlem birkaç tessellation kuralları geçerlidir. Bu kuralları belirleyin: tessellation işlem derinliği ve dokundu hücrelerin hangi dizinde kaydedilir.
Bu kurallar aşağıdaki gibidir:
Kapsayan kural
Nesneyi tamamen bir hücreyi kapsıyorsa, bu hücre olduğu söylenir kaplı nesnesi. Kapalı hücre sayılır ve değil tessellated. Bu kural, tablo hiyerarşi tüm düzeylerde uygulanır. Kapsayan kural mozaik işlemini basitleştirir ve veri miktarını azaltır bu kayma dizin kayıtları.
Nesne başına hücreleri kuralı
Bu kuralın zorlar nesne başına hücreleri sınırı, düzey 1 her nesne için dışında sayabiliriz hücre sayısını belirler. Düşük seviyelerde nesne başına hücreleri kuralı kaydedilebilen nesne hakkında bilgi miktarını kontrol eder.
Acınızı hücre kuralı
Acınızı hücre kuralı, yalnızca nesne için tessellated en alttaki hücrelere kaydederek nesnenin en iyi yaklaşım oluşturur. Ana hücreleri değil katkıda bulunmak için nesne başına hücreleri saymak ve dizinde kaydedilmez.
Bu tessellation kuralları uygulanan ardışık her kılavuz düzeyi vardır. Bu bölümün geri kalanında daha ayrıntılı tessellation kuralları açıklar.
Kural kapsayan
Nesneyi tamamen bir hücreyi kapsıyorsa, bu hücre olduğu söylenir kaplı nesnesi. Örneğin, aşağıda, ikinci düzey hücreleri, 15.11, biri tamamen bir sekizgen orta kısmı ile kaplıdır.
Kapalı hücre sayılan ve dizinde kaydedilir ve hücre daha fazla tessellated değil.
Nesne başına hücreleri kuralı
Mozaik her nesnenin ne ölçüde öncelikle üzerinde bağlıdır nesne başına hücreleri sınırı kayma dizin. Sayısı bu sınırı tanımlar hücreleri bu tessellation nesne güvenebilirsiniz. Ancak, bu yüzden bu sınırı aşan olası nesne başına hücreleri kuralı düzeyi 1, zorlanmaz unutmayın. Düzey 1 ulaştığı saymak veya aşıyor, düşük seviyelerde daha bir mozaik ortaya hücreler-her nesne sınırlayın.
Sayı nesne başına hücreleri sınırı daha az olduğu sürece tessellation işlem devam eder. En küçük numara dokundu (örneğin, hücrede 15,6 yukarıdaki resimde) süreci başlayan saymak o veya o tessellate değerlendirmek için her hücre sınar. Hücre tessellating nesne başına hücreleri sınırı aşabilir, hücre sayılan ve değil tessellated. Aksi takdirde, hücre tessellated ve nesne tarafından dokundu alt düzey hücreler dikkate alınır. Tessellation işlem bu şekilde breadth-wise, düzeyi arasında devam eder. Bu işlem için alt düzey Izgaralar tessellated hücrelerin yinelenen yinelemeli sınırına ulaşıldığında ya da orada hiçbir daha fazla hücreleri saymak için kadar.
Örneğin, düzey 1 kılavuz hücresine 15 tamamen uyan bir sekizgen gösterir önceki şekilde düşünün. Resimde, hücre 15, sekizgen dokuz düzey 2 hücrelere Anatomi tessellated. Bu resimde, nesne başına hücreleri sınırı 9 ya da daha fazla olduğunu varsayar. Nesne başına hücreleri sınıra 8 veya daha az olsaydı, ancak hücre 15 değil tessellated ve yalnızca o hücre 15 nesne için sayılan.
Varsayılan olarak, çoğu kayma dizinler için tatmin edici bir ticaret-off hassas arasındaki alanı sağlayan nesne başına 16 hücreleri nesne başına hücreleri sınırıdır. Ancak, create KAYMA INDEX Transact-SQL deyimini destekleyen bir cells_per_object**=**n 1 ile 8192, kapsayıcı nesne başına hücreleri sınırı belirtmenize olanak tanıyan yan tümcesi.
[!NOT]
cells_per_objectAyarı kayma dizin görünür bounding_box_xmax Katalog görünümü.
Acınızı hücre kuralı
Acınızı hücre kuralı her alt düzey hücreyi üstündeki hücrenin ait olduğu gerçeği patlatır: Düzey-4 hücre düzeyinde-3 hücreye ait, düzey 2 hücreye bir seviye-3 hücre ait ve düzey 1 hücreye bir seviye-2 hücre ait. Örneğin, hücreye 1.1.1.1 ait olduğu nesne de hücre 1.1.1, hücre 1.1 ve hücre 1 aittir. Bu tür hücre-hiyerarşi ilişkileri hakkında bilgi sorgu işlemci inşa edilmiştir. Bu nedenle, yalnızca derin düzeyinde hücreleri dizini depolamak için gereken bilgileri minimize dizinde kaydedilir gerekir.
Aşağıdaki çizimde, nispeten küçük bir elmas şeklinde çokgen tessellated. Bu küçük nesne için ulaşmış değildir varsayılan nesne başına hücreleri sınırı 16, dizini kullanır. Bu nedenle, mozaik düzeyine 4 devam ediyor. Çokgen aşağıdaki düzey-1'den Düzey-3 hücre bulunur: 4, 4,4 ve 4.4.10 ve 4.4.14. Ancak, Acınızı hücre kuralı kullanarak, mozaik sadece on iki düzey-4 hücreleri sayar: 4.4.10.13-15 ve 4.4.14.1-3, 4.4.14.5-7 ve 4.4.14.9-11.
Sayfanın Üstü
Tessellation düzenleri
Kısmen üzerinde kayma dizin davranışını bağlıdır, tessellation düzeni. Tessellation düzeni veri türü olan belirli. De SQL Server, kayma dizinler iki tessellation düzenleri desteği:
Geometrisi kılavuz tessellation, düzeni olan geometryveri türü.
Coğrafi konum kılavuz tessellation, sütun için geçerli olduğu Coğrafya veri türü.
[!NOT]
tessellation_schemeAyarı kayma dizin görünür bounding_box_xmax Katalog görünümü.
Geometrisi kılavuz Tessellation düzeni
GEOMETRY_AUTO_GRID mozaik olduğu varsayılan tessellation düzeni geometryveri türü SQL Serverve sonrası. Büyük mozaik olan geometrisi veri türü için kullanılabilir yalnızca tessellation düzeni SQL Server. Bu bölümde, kayma dizinleri ile çalışmak için ilgili yönleri geometrisi kılavuz tessellation anlatılmaktadır: desteklenen yöntemler ve sınırlayıcı kutuları.
[!NOT]
KULLANMA (GEOMETRY_AUTO_GRID/GEOMETRY_GRID) yan tümcesi kullanarak bu tessellation düzeni açıkça belirtinKAYMA create KAYMA INDEX Transact-SQL deyimi.
Sınırlayıcı kutu
Geometrik verilerin sonsuz olabilir bir uçak kaplar. De SQL Server, ancak sınırlı bir alan kayma dizin gerektirir. Geometrisi kılavuz tessellation düzeni gerektirir ayrışma sonlu bir alan oluşturmak için dikdörtgen sınırlayıcı kutu. Sınırlayıcı kutusunun dört koordinatlarıyla tanımlanan (x-min,y-min) ve (x-max,y-max), hangi özellikleri kayma dizin olarak depolanır. Bu koordinatlar şunları gösterir:
x-minsınırlayıcı kutusunun sol alt köşesinde x-koordinatı olduğunu.
y-minsol alt köşesinde y-koordinatı olduğunu.
x-maxsağ üst köşesindeki x-koordinatı olduğunu.
y-maxsağ üst köşesinde y-koordinatı olduğunu.
[!NOT]
Bu koordinatlar BOUNDING_BOX yan tarafından belirtilen create KAYMA INDEX Transact-SQL deyimi.
(x-min,y-min) Ve (x-max,y-max) koordinatları yerleşim ve sınırlayıcı kutusunun boyutlarını belirler. Alan sınırlayıcı kutunun dışına numaralı 0 tek bir hücre değerlendirilir.
Kayma dizin, sınırlayıcı kutunun içine alan çözer. Düzey 1 kılavuz kılavuz Hierarchy sınırlayıcı kutusunu doldurur. Kılavuz hiyerarşisinde bir geometrik nesneyi yerleştirmek için nesnenin sınırlayıcı kutunun koordinatlarına koordinatları kayma dizin karşılaştırır.
Aşağıda tanımlanan noktaları gösterilmektedir (x-min,y-min) ve (x-max,y-max) sınırlama kutusunu koordinatları. Üst düzey kılavuz Hierarchy bir 4 x 4 kılavuz gösterilir. Resimde amacı, alt düzeyleri göz ardı edilir. Alan sınırlayıcı kutunun dışına sıfır (0) tarafından belirtilir. Not Bu nesne 'a' kısmen kutusu ve nesneyi 'b' genişletir hücrede 0 kutu dışında tamamen yalan.
Sınırlayıcı kutu, bir uygulamanın mekansal veri kısmı için karşılık gelir. Sınırlayıcı kutu dizin tamamen kayma sütun depolanan veriler veya yalnızca bir bölümünü içeren olup olmadığını kadar uygulamasıdır. Yalnızca operasyonlar tamamen içine kayma dizin sınırlayıcı kutusunu fayda olan nesneler üzerinde hesaplanan. Bu nedenle, üzerinde kayma dizin gelen büyük avantajı kazanmak için bir geometrysütunu, bir sınırlayıcı tümünü veya çoğunu nesneleri içeren kutunun belirtmek gerekir.
[!NOT]
Kayma dizin kılavuz densities içinde görünür bounding_box_xmin, bounding_box_ymin, bounding_box_xmax, ve bounding_box_ymaxsütunları bounding_box_xmax Katalog görünümü.
Coğrafi konum kılavuz Tessellation düzeni
Bu tessellation düzeni yalnızca geçerli bir geographysütun. Coğrafya kılavuz tessellation tarafından desteklenen ve nasıl jeodetik alanı anlatılmaktadır yöntemleri bu bölümde özetleyen sonra Kılavuz hiyerarşisi içinde çürümüş bir düzlem üzerine öngörülmektedir.
[!NOT]
(GEOGRAPHY_AUTO_GRID/GEOGRAPHY_GRID) kullanarak yan tümcesi kullanarak bu tessellation düzeni açıkça belirtinKAYMA create KAYMA INDEX Transact-SQL deyimi.
Geodetic alan bir düzlem üzerine projeksiyon
Tarih hesaplamaları geographyörnekleri (nesneler) tedavisinde jeodetik Elipsoit nesneleri içeren alan. Bu alan ayrıştırmak için Coğrafya kılavuz tessellation düzeni, üst ve alt hemisferlerin Elipsoit yüzey böler ve sonra aşağıdaki adımları gerçekleştirir:
Her hemisphere quadrilateral piramit esaslarını projeler.
İki Piramitler düzleştirir.
Non-Euclidean uçak oluşturmak için flattened Piramitler katılır.
Aşağıdaki resimde, üç adım ayrışma sürecini şematik görünümü gösterir. Piramitler, noktalı çizgiler her piramit dört yönlü sınırlarını temsil eder. Adım 1 ve 2, Ekvator boylam çizgi ve yeşil dikey çizgiler birkaç enlem satırları temsil eden bir dizi temsil etmek için yeşil bir yatay çizgi kullanarak jeodetik Elipsoit göstermektedir. 1. Adım, piramitler üzerinde iki hemisferlerin öngörülen gösterir. Adım 2, dümdüz Piramitler gösterir. Öngörülen boylam satır sayısını gösteren bir uçak oluşturacak şekilde birleştirilmiştir sonra flattened Piramitler, adım 3 göstermektedir. Fark bu tahmini satırları doğruldu ve uzunluğu, piramitler üzerinde nerede güz bağlı olarak değişir.
Bir kez alan uçak öngörülen, uçak dört düzey kılavuz hierarchy çürümüş. Farklı seviyelerde farklı kılavuz yoğunluğu kullanabilirsiniz. Sonra o bir 4 x 4 seviye-1 kılavuza decomposed uçak aşağıda gösterilmiştir. Resimde amacıyla, alt-düzey kılavuz Hierarchy atlanır. Aslında, uçak tam dört düzey kılavuz hiyerarşisi içinde çürümüş. Ayrışma süreci tamamlandıktan sonra coğrafi verileri okumak, tarafından satır, coğrafi konum sütun ve tessellation işlem her nesne için sırayla gerçekleştirilir.
Sayfanın Üstü
Kayma dizinler tarafından desteklenen yöntemler
Kayma dizinler tarafından desteklenen geometrisi yöntemleri
Kayma dizinler belirli koşullar altında aşağıdaki kümesi odaklı geometrisi yöntemleri desteği: STContains(), STDistance(), STEquals(), STIntersects(), STOverlaps(), STTouches(), ve STWithin(). Kayma dizin tarafından desteklenmesi için içinde nerede bu yöntemlerin kullanılması gerektiğini JOIN yan tümcesi sorgunun ve aşağıdaki genel biçimde yüklemi içinde gerçekleşmelidir:
geometry1.method_name(geometry2) comparison_operator valid_number
Boş olmayan sonucu dönmek için geometry1ve geometry2aynı olması gerekir kayma başvurusu tanımlayıcısı (SRID). Aksi halde yöntemi null döndürür.
Kayma dizinler, aşağıdaki koşul biçimleri destekler:
geometry1.STContains(geometry2) = 1
geometry1.STDistance(geometry2) < number
geometry1.STDistance(geometry2) <=number
geometry1.STEquals(geometry2) = 1
geometry1.STIntersects(geometry2) = 1
geometry1.STOverlaps(geometry2) = 1
geometry1.STTouches(geometry2) = 1
geometry1.STWithin(geometry2) = 1
Sayfanın Üstü
Kayma dizinler tarafından desteklenen Coğrafya yöntemleri
Belirli koşullar altında kayma dizinler aşağıdaki kümesi odaklı Coğrafya yöntemleri desteği: STIntersects(), STEquals(), ve STDistance(). Kayma dizin tarafından desteklenmesi için bir sorgunun where yan tümcesi içinde bu yöntemlerin kullanılması gerektiğini ve aşağıdaki genel biçimde yüklemi içinde gerçekleşmelidir:
geography1.method_name(geography2) comparison_operator valid_number
Boş olmayan sonucu dönmek için geography1ve geography2aynı olması gerekir Kayma başvurusu tanımlayıcısı (SRID). Aksi halde yöntemi null döndürür.
Kayma dizinler, aşağıdaki koşul biçimleri destekler:
geography1.STIntersects(geography2) = 1
geography1.STEquals(geography2) = 1
geography1.STDistance(geography2) < number
geography1.STDistance(geography2) <=number
Sayfanın Üstü