공간 인덱스 개요Spatial Indexes Overview

SQL ServerSQL Server 에서는 공간 데이터 및 공간 인덱스를 지원합니다. supports spatial data and spatial indexes. 공간 인덱스 는 공간 열을 인덱싱할 수 있는 확장된 인덱스의 유형입니다.A spatial index is a type of extended index that allows you to index a spatial column. 공간 열은 기하 도형 또는 지리와 같은 공간 데이터 형식의 데이터를 포함하는 테이블 열입니다.A spatial column is a table column that contains data of a spatial data type, such as geometry or geography.

중요

SQL Server 2012SQL Server 2012에서 도입된 공간 기능에 대한 자세한 설명 및 예와 공간 인덱스에 영향을 주는 기능에 대한 정보를 보려면 [SQL Server 2012의 새로운 공간 기능](http://go.microsoft.com/fwlink/?LinkId=226407)백서를 다운로드하세요.For a detailed description and examples of spatial features introduced in SQL Server 2012SQL Server 2012, including features that affect spatial indexes, download the white paper, New Spatial Features in SQL Server 2012.

공간 인덱스 정보 About Spatial Indexes

인덱싱된 공간을 표 계층 구조로 분해 Decomposing Indexed Space into a Grid Hierarchy

SQL ServerSQL Server에서 공간 인덱스는 B-트리를 사용하여 구성됩니다. 즉, 인덱스가 2차원 공간 데이터를 B-트리의 선형 순서로 나타내야 한다는 뜻입니다.In SQL ServerSQL Server, spatial indexes are built using B-trees, which means that the indexes must represent the 2-dimensional spatial data in the linear order of B-trees. 따라서 데이터를 공간 인덱스로 읽기 전에 SQL ServerSQL Server 에서는 공간을 계층적으로 균일하게 분해하는 작업을 구현해야 합니다.Therefore, before reading data into a spatial index, SQL ServerSQL Server implements a hierarchical uniform decomposition of space. 인덱스 생성 프로세스에서는 공간을 4-수준 표 계층 구조분해합니다.The index-creation process decomposes the space into a four-level grid hierarchy. 이러한 수준은 수준 1 (최상위 수준), 수준 2, 수준 3수준 4라고 합니다.These levels are referred to as level 1 (the top level), level 2, level 3, and level 4.

각각의 연속되는 수준이 이전 수준을 더 분해하므로 각 상위 수준의 셀은 다음 수준에서 완전한 표를 포함하게 됩니다.Each successive level further decomposes the level above it, so each upper-level cell contains a complete grid at the next level. 지정된 수준에서 모든 표에는 양쪽 축(예: 4x4 또는 8x8)을 따라 동일한 셀 개수가 있으며 셀의 크기는 모두 같습니다.On a given level, all the grids have the same number of cells along both axes (for example, 4x4 or 8x8), and the cells are all one size.

다음 그림에서는 표 계층 구조의 각 수준에서 오른쪽 상단의 셀을 4x4 표로 분해하는 것을 보여 줍니다.The following illustration shows the decomposition for the upper-right cell at each level of the grid hierarchy into a 4x4 grid. 실제로 모든 셀이 이러한 방식으로 분해됩니다.In reality, all the cells are decomposed in this way. 즉, 예를 들어 공간을 4x4 표의 4-수준으로 분해하면 총 65,536수준의 셀 4개가 실제로 생성됩니다.Thus, for example, decomposing a space into four levels of 4x4 grids actually produces a total of 65,536 level-four cells.

재귀 공간 분할의 4가지 수준Four-levels of recursive tessellation

참고

공간 인덱스에 대한 공간 분해는 응용 프로그램 데이터에서 사용하는 측정 단위의 영향을 받지 않습니다.The decomposition of space for a spatial index is independent of the unit of measurement that the application data uses.

표 계층 구조 셀은 힐베르트 공간 채움 곡선의 변형을 사용하여 선형으로 번호가 매겨집니다.Grid hierarchy cells are numbered in a linear fashion by using a variation of the Hilbert space-filling curve. 그러나 이해하기 쉽도록 이 설명에서는 힐베르트 곡선에 따라 실제로 생성되는 번호 매기기 대신 간단한 행 단위 번호 매기기를 사용합니다.For the purpose of illustration, however, this discussion uses a simple row-wise numbering, instead of the numbering that is actually produced by the Hilbert curve. 다음 그림에서는 건물을 나타내는 여러 다각형과 도로를 나타내는 선이 이미 4x4, 수준-1 표에 배치되어 있습니다.In the following illustration, several polygons that represent buildings, and lines that represent streets, have already been placed into a 4x4, level-1 grid. 수준-1 셀은 상단 왼쪽 셀에서부터 1에서 16까지 번호가 매겨져 있습니다.The level-1 cells are numbered from 1 through 16, starting with the upper-left cell.

4x4 수준 1표에 배치된 다각형 및 선Polygons and lines placed into a 4x4 level-1 grid

표 밀도Grid Density

표의 축에 따른 셀 수로 표의 밀도가 결정되며 셀 수가 많을수록 표의 밀도가 높습니다.The number of cells along the axes of a grid determines its density: the larger the number, the denser the grid. 예를 들어 8x8 표(64개의 셀을 생성함)는 4x4 표(16개의 셀을 생성함)보다 밀도가 높습니다.For example, an 8x8 grid (which produces 64 cells), is denser than a 4x4 grid (which produces 16 cells). 표 밀도는 수준별 기준으로 정의됩니다.Grid density is defined on a per-level basis.

공간 인덱스의 CREATE SPATIAL INDEX Transact-SQLTransact-SQL 문은 각 수준별로 다른 표 밀도를 지정할 수 있는 GRIDS 절을 지원합니다.The CREATE SPATIAL INDEX Transact-SQLTransact-SQL statement supports a GRIDS clause that enables you to specify different grid densities at different levels. 다음 키워드 중 하나를 사용하여 지정된 수준의 표 밀도를 지정합니다.The grid density for a given level is specified by using one of the following keywords.

키워드Keyword 표 구성Grid configuration 셀 개수Number of cells
LOWLOW 4X44X4 1616
MEDIUMMEDIUM 8X88X8 6464
HIGHHIGH 16X1616X16 256256

SQL ServerSQL Server에서 데이터베이스 호환성 수준이 100 이하로 설정된 경우 모든 수준의 기본값은 MEDIUM입니다.In SQL ServerSQL Server, when the database compatibility level is set to 100 or lower, then the default is MEDIUM on all levels. 데이터베이스 호환성 수준이 110 이상으로 설정된 경우에는 기본값이 자동 표 구성표입니다.When the database compatibility level is set to 110 or higher, then the default is an auto grid scheme. (자동 그리드는 8가지 수준의 HLLLLLLL 구성 수준을 나타냅니다.) 인덱스 그리드 밀도를 다양하게 하는 대신 힌트에 따라 개체당 셀 수 및 개체당 쿼리 창 셀 수를 변경할 수 있습니다.(Auto grid indicates an 8 level configuration of HLLLLLLL.) Instead of varying index grid density, you can vary cells per object and query window cells per object via hint.

기본값이 아닌 표 밀도를 지정하여 분해 프로세스를 제어할 수 있습니다.You can control the decomposition process by specifying non-default grid densities. 예를 들어 각 수준별로 서로 다른 표 밀도는 인덱싱된 공간의 크기와 공간 열의 개체를 기준으로 인덱스를 미세하게 조정하는 데 유용할 수도 있습니다.For example, different grid densities on different levels might be useful for fine tuning an index based on the size of the indexed space and the objects in the spatial column.

참고

공간 인덱스의 표 밀도는 데이터베이스 호환성 수준이 100 이하로 설정된 경우 sys.spatial_index_tessellations 카탈로그 뷰의 level_1_grid, level_2_grid, level_3_grid 및 level_4_grid 열에서 볼 수 있습니다.The grid densities of a spatial index are visible in the level_1_grid, level_2_grid, level_3_grid, and level_4_grid columns of the sys.spatial_index_tessellations catalog view when the database compatibility level is set to 100 or lower. GEOMETRY_AUTO_GRID/GEOGRAPHY_AUTO_GRID 공간 분할 구성표 옵션은 이러한 열을 채우지 않습니다.The GEOMETRY_AUTO_GRID/GEOGRAPHY_AUTO_GRID tessellation scheme options do not populate these columns. 자동 표 옵션이 사용된 경우 sys.spatial_index_tessellations 카탈로그 뷰에서 이러한 열에 대한 값은 NULL 입니다.sys.spatial_index_tessellations catalog view has NULL values for these columns when the auto grid options are used.

공간 분할 Tessellation

인덱싱된 공간을 표 계층 구조로 분해한 후 공간 인덱스는 공간 열에서 데이터를 한 번에 한 행씩 읽습니다.After decomposition of an indexed space into a grid hierarchy, the spatial index reads the data from the spatial column, row by row. 공간 개체나 인스턴스의 데이터를 읽은 후 공간 인덱스는 해당 개체에 대해 공간 분할 프로세스 를 수행합니다.After reading the data for a spatial object (or instance), the spatial index performs a tessellation process for that object. 공간 분할 프로세스는 개체를 표 형태 셀의 집합과 연결하여(연결된 셀) 개체를 표 계층 구조에 맞게 조정합니다.The tessellation processfits the object into the grid hierarchy by associating the object with a set of grid cells that it touches (touched cells). 표 계층 구조의 수준 1에서 시작하면 공간 분할 프로세스는 전체 수준에서 너비 우선 으로 진행됩니다.Starting at level 1 of the grid hierarchy, the tessellation process proceeds breadth first across the level. 이 프로세스는 한 번에 한 수준씩 4-수준 전체에서 계속 진행될 수도 있습니다.Potentially, the process can continue through all four levels, one level at a time.

공간 분할 프로세스의 출력은 개체의 공간 인덱스에 기록된 연결된 셀의 집합입니다.The output of the tessellation process is a set of touched cells that are recorded in the spatial index for the object. 이러한 기록된 셀을 참조함으로써 공간 인덱스는 인덱스에도 저장된 공간 열의 다른 개체와 연관된 공간에 개체를 배치할 수 있습니다.By referring to these recorded cells, the spatial index can locate the object in space relative to other objects in the spatial column that are also stored in the index.

공간 분할 규칙Tessellation Rules

개체에 대해 기록된 연결된 셀 개수를 제한하기 위해 공간 분할 프로세스에서는 여러 가지 공간 분할 규칙을 적용합니다.To limit the number of touched cells that are recorded for an object, the tessellation process applies several tessellation rules. 이러한 규칙은 공간 분할 프로세스와 인덱스에 기록된 연결된 셀의 깊이를 결정합니다.These rules determine the depth of the tessellation process and which of the touched cells are recorded in the index.

이러한 규칙은 다음과 같습니다.These rules are as follows:

  • 포함 규칙The covering rule

    개체가 한 셀을 완전히 포함할 경우 해당 셀은 개체에 의해 포함 되어 있다고 합니다.If the object completely covers a cell, that cell is said to be covered by the object. 포함된 셀은 개수가 계산되지만 공간 분할이 수행되지는 않습니다.A covered cell is counted and is not tessellated. 이 규칙은 표 계층 구조의 모든 수준에 적용됩니다.This rule applies at all levels of the grid hierarchy. 포함 규칙은 공간 분할 프로세스를 단순화하고 공간 인덱스에 기록된 데이터의 양을 감소시킵니다.The covering rule simplifies the tessellation process and reduces the amount of data that a spatial index records.

  • 개체당 셀 수 규칙The cells-per-object rule

    이 규칙은 개체당 셀 수 제한을 적용하여 각 개체에 대해 계산될 수 있는 최대 셀 수를 결정합니다(수준 1은 제외).This rule enforces the cells-per-object limit, which determines the maximum number of cells that can be counted for each object, except on level 1. 하위 수준에서 개체당 셀 수 규칙은 개체에 대해 기록될 수 있는 정보량을 제어합니다.At lower levels, the cells-per-object rule controls the amount of information that can be recorded about the object.

  • 최하위 셀 규칙The deepest-cell rule

    최하위 셀 규칙은 개체에 대해 공간 분할된 최하위 셀만 기록하여 최적의 개체 근사값을 생성합니다.The deepest-cell rule generates the best approximation of an object by recording only the bottom-most cells that have been tessellated for the object. 부모 셀은 개체당 셀 수 계산에 영향을 주지 않으며 인덱스에 기록되지 않습니다.Parent cells do not contribute to the cells-per-object count, and they are not recorded in the index.

    이러한 공간 분할 규칙은 표 수준마다 반복하여 적용됩니다.These tessellation rules are applied recursively on each grid level. 이 섹션의 나머지 부분에서는 공간 분할 규칙을 좀 더 자세히 설명합니다.The rest of this section describes the tessellation rules in more detail.

포함 규칙Covering Rule

개체가 한 셀을 완전히 포함할 경우 해당 셀은 개체에 의해 포함 되어 있다고 합니다.If an object completely covers a cell, that cell is said to be covered by the object. 예를 들어 다음 그림에서 2-수준 셀 중 하나(15.11)가 팔각형의 가운데 위치에 완전히 포함되어 있습니다.For example, in the following illustration, one of the second-level cells, 15.11, is completely covered by the middle portion of an octagon.

포함 최적화Covering optimization

포함된 셀은 개수가 계산되고 인덱스에 기록되지만 더 이상 공간 분할이 수행되지는 않습니다.A covered cell is counted and recorded in the index, and the cell is not tessellated any further.

개체당 셀 수 규칙Cells-Per-Object Rule

각 개체의 공간 분할 범위는 주로 공간 인덱스의 개체당 셀 수 제한 의 영향을 받습니다.The extent of tessellation of each object depends primarily on the cells-per-object limit of the spatial index. 이 제한은 공간 분할에서 개체당 계산할 수 있는 최대 셀 수를 정의합니다.This limit defines the maximum number of cells that tessellation can count per object. 그러나 개체당 셀 수 규칙은 수준 1에 적용되지 않으므로 이 제한이 초과될 수도 있습니다.Note, however, that the cells-per-object rule is not enforced for level 1, so it is possible to exceed this limit. 수준-1 개수가 개체당 셀 수 제한에 도달하거나 초과할 경우 하위 수준에서 더 이상의 공간 분할이 발생하지 않습니다.If the level-1 count reaches, or exceeds, the cells-per-object limit, no further tessellation occurs at the lower levels.

해당 개수가 개체당 셀 수보다 적은 한 공간 분할 프로세스는 계속 진행됩니다.As long as the count is less than the cells-per-object limit, the tessellation process continues. 공간 분할하는 셀이 개체당 셀 수 제한을 초과하면 해당 셀은 개수가 계산되고 공간 분할이 수행되지 않습니다.Starting with the lowest-number touched cell (for example, cell 15.6 in the preceding illustration), the process tests each cell to evaluate whether to count it or tessellate it. 공간 분할한 셀이 개체당 셀 수 제한을 초과하면 해당 셀은 개수가 계산되지 않고 공간 분할이 수행되지 않습니다.If tessellating a cell would exceed the cells-per-object limit, the cell is counted and not tessellated. 그렇지 않은 경우 해당 셀은 공간 분할이 수행되고 개체와 연결된 하위 수준 셀의 개수가 계산됩니다.Otherwise, the cell is tessellated, and the lower-level cells that are touched by the object are counted. 공간 분할 프로세스는 전체 수준에서 이런 방식으로 계속 진행됩니다.The tessellation process continues in this way, breadth-wise, across the level. 이 프로세스는 제한에 도달하거나 더 이상 계산할 셀이 없을 때까지 공간 분할이 수행된 셀의 하위 수준 표에 대해 계속 반복됩니다.This process is repeated recursively for the lower-level grids of the tessellated cells until the limit is reached or there are no more cells to count.

예를 들어 수준-1 표의 셀 15에 꼭 맞는 팔각형을 보여 주는 위의 그림을 검토해 봅니다.For example, consider the preceding illustration, which shows an octagon that fits completely into cell 15 of the level-1 grid. 그림에서는 팔각형을 수준-2의 셀 9개로 나누어서 셀 15가 공간 분할되었습니다.In the figure, cell 15 has been tessellated, dissecting the octagon into nine level-2 cells. 이 그림에서는 개체당 셀 수 제한을 9개 이상으로 가정합니다.This illustration assumes that the cells-per-object limit is 9 or more. 개체당 셀 수 제한이 8개 이하라면 셀 15는 공간 분할되지 않고 해당 셀 15만 개체의 개수로 계산됩니다.If the cells-per-object limit were 8 or less, however, cell 15 would not be tessellated, and only that cell 15 would be counted for the object.

기본적으로 대부분의 공간 인덱스에 대해 공간과 자릿수 간의 적절한 균형을 이루는 개체당 셀 수 제한은 개체당 셀 16개입니다.By default, the cells-per-object limit is 16 cells per object, which provides a satisfactory trade-off between space and precision for most spatial indexes. 그러나 CREATE SPATIAL INDEX Transact-SQLTransact-SQL 문은 CELLS_PER_OBJECT=n 절을 지원합니다. 이 절을 사용하면 1과 8192 사이를 포함하는 개체당 셀 수 제한을 지정할 수 있습니다.However, the CREATE SPATIAL INDEX Transact-SQLTransact-SQL statement supports a CELLS_PER_OBJECT=n clause that enables you to specify a cells-per-object limit between 1 and 8192, inclusive.

참고

공간 인덱스의 cells_per_object 설정은 sys.spatial_index_tessellations 카탈로그 뷰에서 볼 수 있습니다.The cells_per_object setting of a spatial index is visible in the sys.spatial_index_tessellations catalog view.

최하위 셀 규칙Deepest-Cell Rule

최하위 셀 규칙은 모든 하위 셀이 상위 셀에 속한다는 사실을 활용합니다. 즉, 수준-4 셀은 수준-3 셀에 속하고, 수준-3 셀은 수준-2 셀에 속하며, 수준-2 셀은 수준-1 셀에 속합니다.The deepest-cell rule exploits the fact that every lower-level cell belongs to the cell above it: a level-4 cell belongs to a level-3 cell, a level-3 cell belongs to a level-2 cell, and a level-2 cell belongs to a level-1 cell. 예를 들어 셀 1.1.1.1에 속하는 개체는 셀 1.1.1, 셀 1.1 및 셀 1에도 속합니다.For example, an object that belongs to cell 1.1.1.1 also belongs to cell 1.1.1, cell 1.1, and cell 1. 이러한 셀 계층 관계에 대한 정보는 쿼리 프로세서에 포함됩니다.Knowledge of such cell-hierarchy relationships is built into the query processor. 따라서 인덱스가 저장해야 하는 정보를 최소화하기 위해 최하위 수준의 셀만 인덱스에 기록해야 합니다.Therefore, only the deepest-level cells need to be recorded in the index, minimizing the information that the index needs to store.

다음 그림에서는 비교적 작은 다이아몬드형 다각형이 공간 분할되어 있습니다.In the following illustration, a relatively small diamond-shaped polygon is tessellated. 인덱스는 개체당 셀 수로 기본값 16을 사용하며 이 값은 이러한 작은 개체로는 도달되지 않는 값입니다.The index uses the default cells-per-object limit of 16, which is not reached for this small object. 따라서 공간 분할은 수준 4까지 계속되며,Therefore, tessellation continues down to level 4. 다각형은 수준-1에서 수준-3 셀까지 4, 4.4, 4.4.10 및 4.4.14에 위치합니다.The polygon resides in the following level-1 through level-3 cells: 4, 4.4, and 4.4.10 and 4.4.14. 그러나 최하위 셀 규칙을 사용하면 공간 분할에서는 수준-4 셀 12개만(4.4.10.13-15, 4.4.14.1-3, 4.4.14.5-7, 4.4.14.9-11 등) 계산합니다.However, using the deepest-cell rule, the tessellation counts only the twelve level-4 cells: 4.4.10.13-15 and 4.4.14.1-3, 4.4.14.5-7, and 4.4.14.9-11.

최하위 셀 최적화Deepest-cell optimization

공간 분할(Tessellation) 구성표 Tessellation Schemes

공간 인덱스의 동작은 부분적으로 해당 공간 분할(tessellation) 구성표의 영향을 받습니다.The behavior of a spatial index depends partly on its tessellation scheme. 공간 분할(tessellation) 구성표는 데이터 형식에 따라 달라집니다.The tessellation scheme is data-type specific. SQL ServerSQL Server에서 공간 인덱스는 두 가지 공간 분할(tessellation) 구성표를 지원합니다.In SQL ServerSQL Server, spatial indexes support two tessellation schemes:

  • 기하 도형 표 공간 분할geometry 데이터 형식에 대한 구성표입니다.Geometry grid tessellation, which is the scheme for the geometry data type.

  • 지리 표 공간 분할geography 데이터 형식의 열에 적용합니다.Geography grid tessellation, which applies to columns of the geography data type.

참고

공간 인덱스의 tessellation_scheme 설정은 sys.spatial_index_tessellations 카탈로그 뷰에서 볼 수 있습니다.The tessellation_scheme setting of a spatial index is visible in the sys.spatial_index_tessellations catalog view.

기하 도형 표 공간 분할(tessellation) 구성표Geometry Grid Tessellation Scheme

GEOMETRY_AUTO_GRID 공간 분할은 이상에서 geometry SQL ServerSQL Server 데이터 형식의 기본 공간 분할(tessellation) 구성표입니다.GEOMETRY_AUTO_GRID tessellation is the default tessellation scheme for the geometry data type for SQL ServerSQL Server and later. GEOMETRY_GRID 공간 분할은 SQL ServerSQL Server에서 geometry 데이터 형식에 사용할 수 있는 유일한 공간 분할(tessellation) 구성표입니다.GEOMETRY_GRID tessellation is the only tessellation scheme available for geometry data types in SQL ServerSQL Server. 이 섹션에서는 공간 인덱스 작업과 연관된 기하 도형 표 공간 분할의 측면에서 지원되는 메서드 및 경계 상자에 대해 설명합니다.This section discusses aspects of geometry grid tessellation that are relevant to working with spatial indexes: supported methods and bounding boxes.

참고

CREATE SPATIAL INDEX Transact-SQLTransact-SQL 문의 USING (GEOMETRY_AUTO_GRID/GEOMETRY_GRID) 절을 사용하여 이 공간 분할(tessellation) 구성표를 명시적으로 지정할 수 있습니다.You can explicitly specify this tessellation scheme by using the USING (GEOMETRY_AUTO_GRID/GEOMETRY_GRID) clause of the CREATE SPATIAL INDEX Transact-SQLTransact-SQL statement.

경계 상자The Bounding Box

기하학적 데이터는 무한할 수 있는 평면을 차지합니다.Geometric data occupies a plane that can be infinite. 그러나 SQL ServerSQL Server에서 공간 인덱스는 제한된 공간을 필요로 합니다.In SQL ServerSQL Server, however, a spatial index requires a finite space. 분해를 위한 제한된 공간을 설정하려면 기하 도형 표 공간 분할 구성표에는 사각형 경계 상자가 필요합니다.To establish a finite space for decomposition, the geometry grid tessellation scheme requires a rectangular bounding box. 경계 상자는 (x-min,y-min)(x-max,y-max)라는 4개의 좌표로 정의되며 공간 인덱스의 속성으로 저장됩니다.The bounding box is defined by four coordinates, (x-min,y-min) and (x-max,y-max), which are stored as properties of the spatial index. 이러한 좌표는 다음을 나타냅니다.These coordinates represent the following:

  • x-min 은 경계 상자의 왼쪽 아래 모퉁이의 X 좌표입니다.x-min is the x-coordinate of the lower-left corner of the bounding box.

  • y-min 은 왼쪽 아래 모퉁이의 Y 좌표입니다.y-min is the y-coordinate of the lower-left corner.

  • x-max 는 오른쪽 위 모퉁이의 X 좌표입니다.x-max is the x-coordinate of the upper-right corner.

  • y-max 는 오른쪽 위 모퉁이의 Y 좌표입니다.y-max is the y-coordinate of upper-right corner.

참고

이러한 좌표는 CREATE SPATIAL INDEX Transact-SQLTransact-SQL 문의 BOUNDING_BOX 절에서 지정됩니다.These coordinates are specified by the BOUNDING_BOX clause of the CREATE SPATIAL INDEX Transact-SQLTransact-SQL statement.

(x-min,y-min)(x-max,y-max) 좌표에 따라 경계 상자의 배치 및 차원이 결정됩니다.The (x-min,y-min) and (x-max,y-max) coordinates determine the placement and dimensions of the bounding box. 경계 상자 외부의 공간은 번호가 0으로 매겨진 단일 셀로 처리됩니다.The space outside of the bounding box is treated as a single cell that is numbered 0.

공간 인덱스는 경계 상자 내부의 공간을 분해합니다.The spatial index decomposes the space inside the bounding box. 표 계층 구조 수준-1 표가 경계 상자를 채웁니다.The level-1 grid of the grid hierarchy fills the bounding box. 표 계층 구조에서 기하학적 개체를 배치하기 위해 공간 인덱스에서는 개체 좌표와 경계 상자 좌표를 비교합니다.To place a geometric object in the grid hierarchy, the spatial index compares the coordinates of the object to the bounding-box coordinates.

다음 그림에서는 경계 상자의 (x-min,y-min)(x-max,y-max) 좌표로 정의되는 지점을 보여 줍니다.The following illustration shows the points defined by the (x-min,y-min) and (x-max,y-max) coordinates of the bounding box. 표 계층 구조의 최상위 수준이 4x4 표로 표시됩니다.The top-level of the grid hierarchy is shown as a 4x4 grid. 이해하기 쉽도록 하위 수준은 생략되었습니다.For the purpose of illustration, the lower levels are omitted. 경계 상자 외부의 공간은 0으로 표시됩니다.The space outside of the bounding box is indicated by a zero (0). 'A' 개체는 부분적으로 상자 밖으로 뻗어 있고 'B' 개체는 완전히 셀 0의 상자 바깥쪽에 있습니다.Note that object 'A' extends partly beyond the box, and object 'B' lies completely outside the box in cell 0.

좌표 및 셀 0을 보여 주는 경계 상자Bounding box showing coordinates and cell 0.

경계 상자는 응용 프로그램 공간 데이터의 일부분에 해당합니다.A bounding box corresponds to some portion of an application's spatial data. 인덱스의 경계 상자가 공간 열에 저장된 데이터를 완전히 포함하거나 일부만 포함하는지는 응용 프로그램에 따라 좌우됩니다.Whether the bounding-box of the index completely contains the data stored in the spatial column, or only contains a portion, is up to the application. 전체적으로 경계 상자의 내부에 있는 개체에서 처리되는 작업만 공간 인덱스의 이점을 활용합니다.Only operations computed on objects that are entirely inside of the bounding box benefit from the spatial index. 따라서 geometry 열의 공간 인덱스의 이점을 최대한 활용하려면 개체의 전체 또는 대부분을 포함하는 경계 상자를 지정해야 합니다.Therefore, to gain the greatest advantage from a spatial index on a geometry column, you need to specify a bounding-box that contains all or most of the objects.

참고

공간 인덱스의 표 밀도는 sys.spatial_index_tessellations 카탈로그 뷰의 bounding_box_xmin, bounding_box_ymin, bounding_box_xmax 및 bounding_box_ymax 열에서 볼 수 있습니다.The grid densities of a spatial index are visible in the bounding_box_xmin, bounding_box_ymin, bounding_box_xmax, and bounding_box_ymax columns of the sys.spatial_index_tessellations catalog view.

지리 표 공간 분할 구성표The Geography Grid Tessellation Scheme

공간 분할 구성표는 geography 열에만 적용합니다.This tessellation scheme applies only to a geography column. 이 섹션에서는 지리 표 공간 분할에서 지원되는 메서드에 대해 요약하고 측지 공간이 평면에 표시되는 방법에 대해 설명합니다. 이 측지 공간은 표 계층 구조로 분해됩니다.This section summarizes the methods that are supported by geography grid tessellation and discusses how geodetic space is projected onto a plane, which is then decomposed into a grid hierarchy.

참고

CREATE SPATIAL INDEX Transact-SQLTransact-SQL 문의 USING (GEOGRAPHY_AUTO_GRID/GEOGRAPHY_GRID) 절을 사용하여 이 공간 분할(tessellation) 구성표를 명시적으로 지정할 수 있습니다.You can explicitly specify this tessellation scheme by using the USING (GEOGRAPHY_AUTO_GRID/GEOGRAPHY_GRID) clause of the CREATE SPATIAL INDEX Transact-SQLTransact-SQL statement.

측지 공간을 평면에 표시Projection of the Geodetic Space onto a Plane

geography 인스턴스(개체)에서의 계산은 개체를 포함하는 공간을 측지 타원면으로 처리합니다.Computations on geography instances (objects) treat the space containing the objects as a geodetic ellipsoid. 이 공간을 분해하기 위해 지리 표 공간 분할 구성표에서는 타원면의 표면을 해당하는 위쪽 반구와 아래쪽 반구로 나눈 후 다음 단계를 수행합니다.To decompose this space, the geography grid tessellation scheme divides the surface of the ellipsoid into its upper and lower hemispheres and then performs the following steps:

  1. 각 반구를 사변형 피라미드의 각 면으로 표시합니다.Projects each hemisphere onto the facets of a quadrilateral pyramid.

  2. 두 피라미드를 평평하게 합니다.Flattens the two pyramids.

  3. 평평해진 피라미드를 비유클리드 평면을 구성하도록 조인합니다.Joins the flattened pyramids to form a non-Euclidean plane.

    다음 그림에서는 3단계의 분해 프로세스를 도식 보기로 보여 줍니다.The following illustration shows a schematic view of the three-step decomposition process. 피라미드에서 점선은 각 피라미드에서 네 면의 경계를 나타냅니다.In the pyramids, the dotted lines represent the boundaries of the four facets of each pyramid. 1단계와 2단계는 측지 타원면에 대해 설명하며 녹색 가로선을 사용하여 적도 지역 경도 선을 나타내고 녹색 세로선을 사용하여 여러 위도 선을 나타냅니다.Steps 1 and 2 illustrate the geodetic ellipsoid, using a green horizontal line to represent the equatorial longitude line and a series of green vertical lines to represent several latitude lines. 1단계에서는 양쪽 반구로 표시되는 피라미드를 보여 줍니다.Step 1 shows the pyramids being projected over the two hemispheres. 2단계에서는 평평해지는 피라미드를 보여 줍니다.Step 2 shows the pyramids being flattened. 3단계에서는 평평해진 피라미드가 평면을 구성하도록 결합된 후의 모양을 보여 줍니다. 여기에는 표시된 경도가 많이 나타납니다.Step 3 illustrates the flattened pyramids, after they have been combined to form a plane, showing a number of projected longitude lines. 이렇게 표시된 선은 직선이며 피라미드에 놓이는 위치에 따라 길이가 다양합니다.Notice that these projected lines are straightened and vary in length, depending on where they fall on the pyramids.

    타원면을 평면에 표시Projection of the ellipsoid onto a plane

    일단 공간이 평면으로 표시되면 이 평면은 4-수준의 표 계층 구조로 분해됩니다.Once the space has been projected onto the plane, the plane is decomposed into the four-level grid hierarchy. 각 수준은 서로 다른 표 밀도를 사용할 수 있습니다.Different levels can use different grid densities. 다음 그림에서는 4x4 수준-1 표로 분해된 후의 평면을 보여 줍니다.The following illustration shows the plane after it has been decomposed into a 4x4 level-1 grid. 이해하기 쉽도록 하위 수준의 표 계층 구조는 생략됩니다.For the purposes of illustration, the lower-levels of the grid hierarchy are omitted. 실제로 평면은 4-수준 표 계층 구조로 완전히 분해됩니다.In actuality, the plane is fully decomposed into a four-level grid hierarchy. 분해 프로세스가 완료된 후 지리 열에서 지리적 데이터를 한 번에 한 행씩 읽고 공간 분할 프로세스를 각 개체에 대해 차례로 수행합니다.After the decomposition process finishes, the geographic data is read, row by row, from the geography column, and the tessellation process is performed for each object in turn.

    수준 1 지리 표Level-1 geography grid

공간 인덱스에서 지원되는 메서드 Methods Supported by Spatial Indexes

공간 인덱스에서 지원되는 기하 도형 메서드 Geometry Methods Supported by Spatial Indexes

공간 인덱스는 특정 조건에서 STContains(), STDistance(), STEquals(), STIntersects(), STOverlaps(), STTouches() 및 STWithin()과 같은 집합 지향 geometry 메서드를 지원합니다.Spatial indexes support the following set-oriented geometry methods under certain conditions: STContains(), STDistance(), STEquals(), STIntersects(), STOverlaps(), STTouches(), and STWithin(). 공간 인덱스의 지원을 받기 위해 이러한 메서드는 쿼리의 WHERE 또는 JOIN ON 절 내에 사용해야 하며 다음 일반 형식의 조건자 내에서 발생해야 합니다.To be supported by a spatial index, these methods must be used within the WHERE or JOIN ON clause of a query, and they must occur within a predicate of the following general form:

geometry1.method_name(geometry2)comparison_operatorvalid_numbergeometry1.method_name(geometry2)comparison_operatorvalid_number

Null이 아닌 결과를 반환하려면 geometry1geometry2 에 동일한 SRID(Spatial Reference Identifier)가 있어야 합니다.To return a non-null result, geometry1 and geometry2 must have the same spatial reference identifier (SRID). 그렇지 않으면 메서드가 NULL을 반환합니다.Otherwise, the method returns NULL.

공간 인덱스는 다음 조건자 형식을 지원합니다.Spatial indexes support the following predicate forms:

공간 인덱스에서 지원되는 지리 메서드 Geography Methods Supported by Spatial Indexes

특정 조건에서 공간 인덱스는 STIntersects(),STEquals() 및 STDistance()와 같은 집합 지향 지리 메서드를 지원합니다.Under certain conditions, spatial indexes support the following set-oriented geography methods: STIntersects(),STEquals(), and STDistance(). 공간 인덱스의 지원을 받기 위해 이러한 메서드는 쿼리의 WHERE 절 내에 사용해야 하며 다음 일반 형식의 조건자 내에서 발생해야 합니다.To be supported by a spatial index, these methods must be used within the WHERE clause of a query, and they must occur within a predicate of the following general form:

geography1.method_name(geography2)comparison_operatorvalid_numbergeography1.method_name(geography2)comparison_operatorvalid_number

Null이 아닌 결과를 반환하려면 geography1geography2 에 동일한 SRID(Spatial Reference Identifier)가 있어야 합니다.To return a non-null result, geography1 and geography2 must have the same Spatial Reference Identifier (SRID). 그렇지 않으면 메서드가 NULL을 반환합니다.Otherwise, the method returns NULL.

공간 인덱스는 다음 조건자 형식을 지원합니다.Spatial indexes support the following predicate forms:

공간 인덱스를 사용하는 쿼리Queries that use Spatial Indexes

공간 인덱스는 WHERE 절에서 인덱싱된 공간 연산자를 포함하는 쿼리에서만 지원됩니다.Spatial indexes are only supported in queries that include an indexed spatial operator in the WHERE clause. 예를 들어 다음과 같은 예제 구문의 경우For example syntax such as:

[spatial object].SpatialMethod([reference spatial object]) [ = | < ] [const literal or variable]  

쿼리 최적화 프로그램은 공간 연산의 교환( @a.STIntersects(@b) = @b.STInterestcs(@a) )을 인식합니다.The query optimizer understands the commutativity of spatial operations (that @a.STIntersects(@b) = @b.STInterestcs(@a) ). 그러나 비교의 시작 부분에 공간 연산자가 포함되어 있지 않은 경우 공간 인덱스가 사용되지 않습니다. 예를 들어 WHERE 1 = spatial op 는 공간 인덱스를 사용하지 않습니다.However, the spatial index will not be used if the beginning of a comparison does not contain the spatial operator (for example WHERE 1 = spatial op will not use the spatial index). 공간 인덱스를 사용하려면 비교를 다시 씁니다(예: WHERE spatial op = 1).To use the spatial index, rewrite the comparison (for example WHERE spatial op = 1).

다른 인덱스를 사용하는 것처럼 공간 인덱스가 지원되는 경우 비용을 기반으로 공간 인덱스가 선택되므로 사용 요구 사항이 모두 충족되는 경우에도 쿼리 최적화 프로그램은 공간 인덱스를 사용하도록 선택하지 않을 수 있습니다.As with any other index, when a spatial index is supported, the use of the spatial index is chosen based on cost, so the query optimizer might not choose to use the spatial index even though all requirements for using it are met. 실행 계획을 사용하여 공간 인덱스를 사용하는지 여부를 확인하고, 필요할 경우 원하는 쿼리 계획을 강제로 수행하도록 쿼리 힌트를 제공하세요.Use showplan to see if the spatial index was used and if necessary provide query hints to force a desired query plan.

가장 인접한 쿼리 유형도 공간 인덱스를 지원하지만 특정 쿼리 구문인 경우에만 쓰여집니다.The nearest neighbor type of query also supports spatial indexes however only if a specific query syntax is written. 적합한 구문은 다음과 같습니다.The appropriate syntax is:

SELECT TOP(K) [WITH TIES] *   
FROM <Table> AS T [WITH(INDEX(<SpatialIndex>))]  
WHERE <SpatialColumn>.STDistance(@reference_object) IS NOT NULL  
ORDER BY <SpatialColumn>.STDistance(@reference_object) [;]  

참고 항목See Also

공간 데이터(SQL Server)Spatial Data (SQL Server)