O DB2 Spatial Extender trabalha com índices espaciais para melhorar o desempenho das consultas espaciais. Considere a consulta espacial mais básica e provavelmente a mais popular, a consulta de caixa. Esta consulta solicita que o DB2 Spatial Extender retorne todas as geometrias que estão completamente ou parcialmente dentro de uma caixa definida pelo usuário. Quando não há um índice, o DB2 Spatial Extender precisa comparar todas as geometrias com a caixa. No entanto, com um índice, o DB2 Spatial Extender pode localizar todas as entradas do índice que possuem uma coordenada esquerda inferior maior ou igual a caixa e uma coordenada direita superior menor que ou igual a da caixa. Como o índice é ordenado por este sistemas de coordenadas, o DB2 Spatial Extender consegue obter rapidamente uma lista das geometrias candidatas. O processo que acabou de ser descrito é chamado de primeiro passo.
Um segundo passo determina se cada envelope do candidato intersecta a caixa. Uma geometria que se qualifica para o primeiro passo porque seu envelope de células de grade intersecta a caixa pode ela mesmo ter um envelope que não intersecta a caixa.
Um terceiro passo compara as coordenadas vigentes do candidato com a caixa para determinar se alguma parte da geometria está realmente dentro da caixa. Este último e um tanto complexo processo de comparação opera em uma lista de candidatos composta por um subconjunto da população total, que é significativamente reduzida pelos dois primeiros passos.
Todas as consultas espaciais realizam os três passos exceto pela função EnvelopesIntersect. Ela realiza apenas os dois primeiros passos. A função EnvelopesIntersect foi projetada para exibir operações que geralmente empregam suas próprias rotinas de recorte incorporadas e não requerem a granulosidade do terceiro passo.
O shape irregular dos envelopes da geometria dificultam a seleção do tamanho da célula de grade. Devido a esta irregularidade, alguns envelopes de geometrias intersectam diversas grades, enquanto outros se ajustam dentro de uma única célula de grade. Inversamente, dependendo da distribuição espacial dos dados, algumas células de grade intersectam vários envelopes de geometrias.
Para que um índice espacial funcione bem, é essencial que o número e o tamanho corretos das grades sejam selecionados. Considere uma coluna espacial que contém geometrias dimensionadas uniformemente. Neste caso, um único nível de grade será suficiente. Comece com um tamanho de célula de grade que abranja o envelope médio da geometria. Ao testar sua aplicação, você pode perceber que aumentar o tamanho da célula de grade melhora o desempenho de suas consultas. Isto porque cada célula de grade contém mais geometrias e o primeiro passo tem condições de descartar mais rapidamente geometrias não-qualificadas. No entanto, você irá perceber que à medida que você continua a aumentar o tamanho da célula, o desempenho começa a decair. Isto porque eventualmente o segundo passo terá que sustentar mais candidatos.
Se os objetos a serem indexados são aproximadamente do mesmo tamanho relativo, você pode usar um único nível de grade. Embora isto seja verdade, nem todas as colunas irão conter geometrias do mesmo tamanho relativo. Geralmente, as geometrias de colunas espaciais podem ser agrupadas em diversos intervalos de tamanho. Por exemplo, considere uma rede rodoviária na qual as geometrias são divididas em ruas, avenidas e estradas. As ruas são quase todas do mesmo comprimento e podem ser agrupadas em um intervalo de tamanho. Isto também é verdadeiro para as avenidas e estradas. Sendo assim, as ruas, representando o um intervalo de tamanho, poderiam ser agrupadas no primeiro nível de grade, as redes rodoviárias no segundo e as estradas no terceiro nível de grade. Outro exemplo inclui uma coluna de lote de município que contém grupos de pequenos lotes urbanos cercados por lotes rurais maiores. Neste caso, há dois intervalos de tamanho e dois níveis de grade, uma para os pequenos lotes urbanos e outro para os lotes rurais maiores. Estas situações são muito comuns e exigem o uso de uma grade de multiníveis.
Para selecionar o tamanho de célula para cada nível de grade, selecione os tamanhos da célula de grade que são um pouco maiores do que cada intervalo de tamanho. Teste o índice realizando consultas junto à coluna espacial.
Cada nível adicional requer uma pesquisa de índice extra. Tente ajustar os tamanhos de grade um pouco para cima ou para baixo para determinar se uma melhoria considerável no desempenho pode ser obtida.