Aracılığıyla paylaş


Kayma, dizin oluşturma genel bakış

SQL Server 2008 ve sonraki sürümleri uzamsal veri destekler.Bu bir düzlemsel uzamsal veri türü için destek içerir. geometry, hangi geometrik veri destekler — noktalar, satırları ve Çokgen — Euclidean bir koordinat sistemi içinde. The geography data type represents geographic objects on an area on the Earth's surface, such as a spread of land.Bir coğrafi konum kayma BIR dizin sütun coğrafi veriler iki boyutlu bir non-Euclidean alanı için eşleştirir.

Kayma bir dizin (bir uzamsal veri içeren bir tablo sütunu tanımlı kayma sütun).Kayma her dizin için sonlu bir alanı gösterir.Örneğin, bir dizin için bir geometry kullanıcı tarafından belirtilen dikdörtgen bir alanı bir düzlemde sütuna başvuruyor.

Dizinli alanı bir kılavuz sıradüzeni decomposing...

Içinde SQL Server 2008, kayma dizinleri B-ağaçlarını kullanarak dizinleri B ağaçlarını doğrusal sırasını 2 boyutlu kayma verilerde göstermelidir anlamına gelir yerleşiktir. Kayma bir dizini, bu nedenle, veri okumadan önce SQL Server 2008 Sıradüzensel bir Tekdüzen decomposition alanı uygular. Dizin oluşturma işlemi çözer bir dört düzey alanınaKılavuz sıradüzeni.Bu düzeyleri için olarak adlandırılır Düzey 1 (üst düzey), Düzey 2, Düzey 3, and Düzey 4.

Her bir üst düzey hücre sonraki düzeyinde eksiksiz bir kılavuz içerecek şekilde daha fazla ardışık her düzey, yukarıda düzeyi çözer.Üzerinde bir verilen düzey, tüm kılavuzlar aynı numarayı (örneğin, 4 x 4 veya 8 x 8) her iki eksen boyunca bir hücre varsa, ve hücreleri tüm bir boyutu.

Aşağıda Kılavuz hiyerarşinin her düzeyinde sağ üst hücresinin decomposition 4 x 4 kılavuz olarak gösterir.Gerçekte, tüm hücreleri, böylece decomposed.Bu nedenle, örneğin, dört düzey 4 x 4 ızgaraları alan decomposing gerçekten 65.536 düzeyi dört hücreleri toplam oluşturur.

Four-levels of recursive tessellation

Not

Uygulama verilerini kullanan bir ölçü biriminden bağımsız decomposition kayma bir dizin için bir alan var.

Hücreleri bir Kılavuz sıradüzenin, bir türevi Hilbert alanını doldurma eğrinin kullanarak doğrusal bir şekilde numaralandırılır.Gösterim amacıyla, ancak, bu tartışma row-wise, gerçekte Hilbert eğri tarafından üretilen numaralandırma yerine numaralandırma basit kullanır.Aşağıdaki çizimde, bina ve streets temsil eden satırlar temsil eden birkaç çokgenler zaten bir 4 x 4, Düzey 1 kılavuza konuldu.Düzey 1 hücreleri 1-16, sol üst hücre ile başlayarak numaralandırılır.

Polygons and lines placed into a 4x4 level-1 grid

Kılavuz yoğunluk

Hücre kılavuz, eksen boyunca belirler, Yoğunluk: Sayı ne kadar büyük olursa, daha yoğun kılavuz. Örneğin, (, 64 hücreleri) 8 x 8 kılavuz, (, 16 hücreleri) 4 x 4 kılavuz daha yoğun olur.Kılavuz yoğunluğu, her düzey için ayrı ayrı olarak tanımlanır.

The CREATE SPATIAL INDEXTransact-SQL statement supports a GRIDS clause that enables you to specify different grid densities at different levels.Kılavuz Yoğunluk düzey verilen, aşağıdaki anahtar sözcükler kullanılarak belirtilir:

Anahtar Sözcük

Kılavuz Yapılandırması

Hücre sayısı

DÜŞÜK

4 x 4

16

RESTRICTED_USER yalnızca db_owner, dbcreator ve sisyönet rollerinin üyesi =

8 x 8

64

YÜKSEK

16 x 16

256

Varsayılan değer tüm düzeylerindeki Orta'dır.

Varsayılan kılavuz yoğunluğunu belirterek decomposition işlem denetleyebilirsiniz.Örneğin, farklı bir kılavuz yoğunluğunu farklı düzeylerdeki dizinli alan ve nesneleri kayma sütun boyutunu temel alan bir dizin ince ayarlamak için yararlı olabilir.

Not

Kılavuz yoğunluğunu kayma bir dizin level_1_grid level_2_grid, level_3_grid ve level_4_grid sütunları görülebilir sys.spatial_index_tessellations kataloğunu görüntüleyin.

Mozaik

Dizin oluşturulmuş bir alanı kılavuz sıradüzeni içinde decomposition sonra kayma dizin verileri kayma okur sütun, satır satır.Bir kayma nesnesi (veya) için veri okuduktan sonra kayma dizin gerçekleştiren bir Mozaik işlemi bu nesne için.The tessellation processfits the object into the grid hierarchy by associating the object with a set of grid cells that it touches (touched cells).Kılavuz hiyerarşisinin 1 düzeyinde başlayarak, Mozaik işlemi gerçekleştirilir. etki derecesini ilk üzerinden düzey.Büyük olasılıkla, işlemin tüm dört düzeyi ile devam bir seferde bir düzey.

Mozaik işlemin çıkışını kayma dizindeki nesne için kaydedilen touched hücreleri kümesidir.Kaydedilen bu hücrelere başvuran tarafından kayma dizin, alana göre de dizinde depolanan diğer nesnelere kayma sütundaki nesne bulabilirsiniz.

Mozaik kuralları

Bir nesne için kaydedilen touched hücre sayısını sınırlamak için , çeşitli Mozaik kuralları Mozaik işlemi uygulanır.Bu kurallar Mozaik işlem derinliğini ve hangi hücrelerin touched dizine kaydedilir belirler.

Bu kurallar şunlardır:

  • Kapak kuralı

    Nesnenin tam bir hücreyi kapsıyorsa, bu hücre olarak kabul edilir Kapsanan nesne tarafından.Kapsanan hücre sayılır ve tessellated değil.Bu kural, kılavuz hiyerarşisinde tüm düzeylerde uygulanır.Kapak kural Mozaik işlemini basitleştirir ve veri miktarını, bir kayma dizin kayıtları.

  • Nesne hücreleri kuralı

    Bu kuralı uygular Nesne hücreleri sınırıHer nesne için dışında düzey 1 sayılması bir hücre sınırını belirleyen. Daha alt düzeylerde nesne hücreleri kural kaydedilebilen nesnesine ilişkin bilgi miktarını denetler.

  • Acınızı hücre kuralı

    Acınızı hücre kural, yalnızca nesnenin tessellated yalnızca alt en hücreleri kaydı tarafından nesnenin en iyi olan yaklaşık oluşturur.Üst hücre için nesne hücre sayısı katkıda ve dizinde kaydedilmedi.

Her bir kılavuz düzey üzerinde uygulanan özyinelemeli olarak bu Mozaik kurallardır.Bu bölümün geri kalanında Mozaik kuralları ayrıntılı olarak açıklanır.

Kural kapsayan

Nesnenin tam bir hücreyi kapsıyorsa, bu hücre olarak kabul edilir Kapsanan nesne tarafından.Örneğin, aşağıdaki çizimde, bir ikinci düzey hücrelerin 15.11, tam bir octagon orta bölümünü tarafından alınmıştır.

Covering optimization

Kapsanan hücre sayılan ve dizine kaydedilir ve hücre daha fazla tessellated.

Hücreleri tek nesne kuralı

Her bir nesnenin Mozaik kapsamını öncelikle üzerinde bağlıdır Nesne hücreleri sınırı kayma dizin.Bu sınırı en fazla sayıyı tanımlar hücreleri nesne bu Mozaik saydırabilirsiniz.Ancak, bu sınırı aşmasına olanaklıdır, böylece kural nesnesi hücreleri düzey 1'için zorlanmaz unutmayın.Hücreleri-başına-nesne sınırlamak düzey 1 ulaştığında saymak veya aşıyor, başka hiçbir Mozaik daha düşük düzeyde gerçekleşir.

Sayı nesne hücre sınırını küçüktür sürece Mozaik işlem devam eder.Işlem en küçük numara touched hücresinden (örneğin, hücrede 15.6 önceki resimde) başlayarak her hücre, saymak veya yeniden tessellate değerlendirmek için sınar.Bir hücre tessellating nesne hücre sınırını aşabilir, hücre sayılan ve değil tessellated.Aksi takdirde, hücre tessellated ve nesne tarafından işlemdeki alt düzey hücreler dikkate alınır.Mozaik işlem bu şekilde, düzey breadth-wise, devam eder.Bu yinelenen özyinelemeli olarak alt düzey kılavuzlar tessellated hücre için yok sayılacak hücrelerin yok daha fazla ya da sınıra ulaşılana kadar işlemidir.

Örneğin, Düzey 1 kılavuz 15 hücresine tam uyan bir octagon gösterir önceki resimde göz önünde bulundurun.Şekilde, hücre 15, the octagon dokuz düzeye 2 hücrelere dissecting tessellated.Bu resimde nesne hücreleri sınırı 9 veya daha fazla varsayar.Nesne hücreleri sınırı 8 veya daha az olursa, ancak değil hücre 15 tessellated ve nesne için yalnızca o hücre 15 sayılması.

Varsayılan olarak, 16 hücreleri arasındaki boşluk) ve duyarlık tatmin edici bir denge çoğu kayma dizinlerini sağlayan nesne başına nesne hücreleri sınırıdır.However, the CREATE SPATIAL INDEXTransact-SQL statement supports a CELLS_PER_OBJECT**=**n clause that enables you to specify a cells-per-object limit between 1 and 8192, inclusive.

Not

The cells_per_object setting of a spatial index is visible in the sys.spatial_index_tessellations catalog view.

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 olgu açıklarını kullanır: Düzey 3 olan bir hücreye bir düzey-4 hücre ait, Düzey 3 hücre düzeyi 2 olan bir hücreye ait ve düzey 2 hücre düzeyi 1 olan bir hücreye ait. Örneğin, hücreye 1.1.1.1 ait bir nesneyi de 1.1.1 hücre, hücre 1.1 ve hücre 1 aittir.Bilgi gibi hücre sıradüzeni ilişkilerinin query processor yerleşik olarak bulunur.Bu nedenle, yalnızca Acınızı düzey hücreleri dizini depolamak için gereken bilgileri en aza dizinde kaydedilmesi gerekir.

Aşağıdaki çizimde, görece küçük bir elmas şeklindeki Çokgen tessellated.Dizin, bu küçük bir nesne için ulaştı varsayılan nesne hücreleri sınırı 16, kullanır.Bu nedenle, Mozaik Düzey 4 kapalı doğru devam eder.Aşağıdaki düzey 1 düzeyi 3 hücreleri aracılığıyla çokgeni bulunur: 4, 4.4, 4.4.10 ve 4.4.14. Ancak, Acınızı hücre Kuralı'nı kullanarak, Mozaik yalnızca on iki Düzey-4 hücreleri sayar: 4.4.10.13-15 4.4.14.1-3, 4.4.14.5-7 ve 4.4.14.9-11.

Deepest-cell optimization

Mozaik düzenleri

Kayma bir dizin davranışını kısmen de bağlıdır, Mozaik düzeni.Mozaik düzenini, veri türü olan belirli.SQL Server 2008'de, iki Mozaik düzenleri kayma dizinlerini destekler:

  • Geometri kılavuz Mozaikdüzeninde olan geometry Veri Türü.

  • Coğrafya kılavuz Mozaiksütunlara uygulanan coğrafi konum veri türü.

Not

The tessellation_scheme setting of a spatial index is visible in the sys.spatial_index_tessellations catalog view.

Geometri kılavuz Mozaik düzeni

Kılavuz Mozaik geometri varsayılan Mozaik düzeninde ise geometry veri türü ve SQL Server 2008, yalnızca bu tür Mozaik düzeni olduğu. Bu bölüm, kayma dizinleri ile çalışmak için uygun olan yönlerini geometri kılavuz Mozaik anlatılmaktadır: yöntem ve sınırlayıcı kutuları desteklenmiyor.

Not

You can explicitly specify this tessellation scheme by using the USING GEOMETRY_GRID clause of the CREATE SPATIAL INDEXTransact-SQL statement.

Desteklenen Geometry yöntemleri

Kayma bir dizin kümesi odaklı yöntemleri, nesneleri filtre olarak işlev gören kayma bir sütuna uygulama maliyetini azaltmak için tasarlanmıştır.The geometry data type provides built-in methods for constructing geometry instances that describe geometric objects and for working with those instances.Belirli koşullar altında çok sayıda kayma dizinleri desteği küme-geometri yöntemleri gibi yönelik STIntersects() ve STTouches().

Kayma dizinler tarafından geometri yöntemleri için sağlanan desteği hakkında daha fazla bilgi için bkz: Kayma dizinler tarafından desteklenen geometri yöntemleri.

Sınırlayıcı kutu

Geometrik veri, sonsuz bir düzlem kaplar.Içinde SQL Server 2008, ancak kayma bir dizin, sınırlı bir alan gerektirir. Decomposition sınırlı bir alan oluşturmak için , geometri kılavuz Mozaik düzeni bir dikdörtgen gerektirir sınırlayıcı kutu.Dört koordinatlarıyla tanımlanan sınırlayıcı kutu (x-min,y-min) and (x-max,y-max) kayma dizin özellikleri olarak saklanan.Bu koordinatları aşağıdakileri gösterir:

  • x-min sol alt köşesinde, x-koordinatı sınırlayıcı kutu.

  • y-min sol üst köşesinin y koordinatını olur.

  • x-max sağ üst köşesinin x koordinatını olur.

  • y-max sağ üst köşesinin y koordinatını olur.

Not

These coordinates are specified by the BOUNDING_BOX clause of the CREATE SPATIAL INDEXTransact-SQL statement.

The (x-min,y-min) and (x-max,y-max) coordinates determine the placement and dimensions of the sınırlayıcı kutu.Alan dışında sınırlayıcı kutu numaralı 0 olan bir tek hücre nitelenir.

Kayma dizin sınırlayıcı kutu içine boşluk çözer.Düzey 1 kılavuz Kılavuz hiyerarşisinin sınırlayıcı kutu doldurur.Geometrik bir nesneyi kılavuz hiyerarşisinde yerleştirmek için , sınırlama kutusu koordinatları nesnesine koordinatlarını kayma dizin karşılaştırır.

Aşağıda tanımlanan noktaları gösterilmiştir (x-min,y-min) and (x-max,y-max) koordinatları sınırlayıcı kutu.4 X 4 kılavuz Kılavuz hiyerarşinin en üst gösterilir.Örnek için alt düzeyleri atlandı.Alan sınırlayıcı kutusunun dışında bir sıfır (0) olarak gösterilir.Kısmen kutusunda Nesne 'A' genişletir ve Nesne 'B' kutusunu hücrede 0 dışında tümüyle kaynaklandığını unutmayın.

Bounding box showing coordinates and cell 0.

Sınırlayıcı kutu, bazı uygulama uzamsal veri bölümüne karşılık gelir.Sınırlama-kutuyu dizin tamamen kayma içinde depolanan verileri içerip içermediğine sütun, veya yalnızca bir bölümünü içerir, bu kadar uygulamasıdır.Yalnızca operasyonlar, tamamen kayma dizinden sınırlayıcı kutu yararı, içindeki nesneler üzerinde hesaplanan.Bu nedenle, en büyük avantajı kayma bir dizinden sağlamasına bir geometry sütun, bir sınırlayıcı nesnelerin çoğunu veya tümünü içeren kutunun belirtmeniz gerekir.

Not

Kılavuz yoğunluğunu kayma bir dizin bounding_box_xmin bounding_box_ymin, bounding_box_xmax ve bounding_box_ymax sütunları görülebilir sys.spatial_index_tessellations kataloğunu görüntüleyin.

Coğrafya kılavuz Mozaik düzeni

Bu Mozaik düzeni yalnızca geçerli bir geography sütun. Bu bölüm, Coğrafya kılavuz Mozaik tarafından desteklenir ve ne geodetic alanı anlatılır yöntemleri özetler sonra kılavuz bir hiyerarşide decomposed bir düzlem üzerine öngörülen.

Not

You can explicitly specify this tessellation scheme by using the USING GEOGRAPHY_GRID clause of the CREATE SPATIAL INDEXTransact-SQL statement.

Desteklenen bir Coğrafya yöntemleri

The geography data type provides built-in methods for constructing and manipulating geographyinstances that describe geographic objects.Belirli koşullar altında kayma dizinleri aşağıdaki kümesi yönelimli bir Coğrafya yöntemleri destekler: STIntersects(), STEquals(), ve STDistance(). Kayma BIR dizini bir geography veri türü sütununu nesneleri süzgeçleri ve uzamsal veri bu yöntem uygulama performansını ve sorgu maliyetini azaltır.

Coğrafya yöntemlerini kayma dizinler tarafından sağlanan desteği hakkında daha fazla bilgi için bkz: Kayma dizinler tarafından desteklenen bir Coğrafya yöntemleri.

Bir düzlem üzerine Geodetic alanının projeksiyon

Temel hesaplamaları geographyörnekler (nesneler) geodetic bir ellipsoid nesneleri içeren alanı'nı kabul edin. Bu alan decompose için , Coğrafya kılavuz Mozaik düzeni ellipsoid yüzeyine, alt ve üst hemispheres bölen ve sonra aşağıdaki adımları gerçekleştirir:

  1. Her hemisphere quadrilateral bir piramit esaslarını ilgili olarak projeler.

  2. Iki Piramitler düzleştirir.

  3. Non-Euclidean bir uçak oluşturmak üzere bir düzleştirilmiş Piramitler birleştirir.

Aşağıdaki resimde, üç adımlı decomposition işlem şematik görünümünü gösterir.Piramit, noktalı çizgiler, her piramit bir dört esaslarını sınırlarını gösterir.1 Ve 2 numaralı adımları, Ekvator boylam satırı ve bir dizi birkaç enlem satırları temsil eden yeşil dikey çizgileri göstermek için yeşil bir yatay çizgi kullanarak, geodetic ellipsoid gösterilmektedir.Adım 1 ' iki olan hemispheres öngörülen Piramitler gösterir.Adım 2 düzleştirilmiş Piramitler gösterir.Bunlar öngörülen boylam satır sayısını gösteren, bir uçak oluşturmak için bir araya sonra Adım 3 düzleştirilmiş Piramitler, gösterir.Bu tahmini satırlarını straightened ve uzunluğu, burada bunlar üzerinde Piramitler Sonbahar bağlı olarak değişir dikkat edin.

Projection of the ellipsoid onto a plane

Alan için öngörülen düzlemi bir kez düzlemi dört düzey kılavuz hiyerarşisinde girdiği decomposed.Farklı bir kılavuz yoğunluğunu farklı düzeylerini kullanın.Aşağıdaki resimde, 4 x 4 düzey 1 kılavuza decomposed sonra düzlemi gösterir.Gösterim amacıyla kılavuz hiyerarşisinde alt düzeylerde atlandı.Actuality içinde düzlem dört düzey kılavuz sıradüzeni içinde tam olarak decomposed.Decomposition işlemi tamamlandıktan sonra coğrafi Coğrafya okuma, satır satır veridir sütun, ve Mozaik işleme her nesne için sırayla gerçekleştirilir.

Level-1 geography grid

Kayma dizin desteği

Kayma bir dizin, yalnızca kayma bir sütun üzerinde oluşturulabilir.Kayma dizinleri destekleyen bir tabloda kayma herhangi bir sütun üzerinde kayma dizinleri oluşturmak ve kayma belirli bir sütunda birden çok kayma dizinler oluşturabilirsiniz.Kayma dizinler üzerinde kısıtlamalar hakkında daha fazla bilgi için bkz: Kayma dizinler kısıtlamalar.