MEMBUAT INDEKS SPASIAL (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Membuat indeks spasial pada tabel dan kolom tertentu di SQL Server. Indeks dapat dibuat sebelum ada data dalam tabel. Indeks dapat dibuat pada tabel atau tampilan di database lain dengan menentukan nama database yang memenuhi syarat. Indeks spasial mengharuskan tabel memiliki kunci primer berkluster. Indeks spasial tidak dapat ditentukan pada tampilan terindeks. Untuk informasi tentang indeks spasial, lihat Gambaran Umum Indeks Spasial.

Konvensi sintaks transact-SQL

Sintaksis

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 }  
}  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

index_name
Adalah nama indeks. Nama indeks harus unik dalam tabel tetapi tidak harus unik dalam database. Nama indeks harus mengikuti aturan pengidentifikasi.

OBJEK> ON <( spatial_column_name )
Menentukan objek (database, skema, atau tabel) tempat indeks akan dibuat dan nama kolom spasial.

spatial_column_name menentukan kolom spasial yang menjadi dasar indeks. Hanya satu kolom spasial yang dapat ditentukan dalam satu definisi indeks spasial; namun, beberapa indeks spasial dapat dibuat pada kolom geometri atau geografi .

USING
Menunjukkan skema tessellation untuk indeks spasial. Parameter ini menggunakan nilai khusus jenis, yang diperlihatkan dalam tabel berikut:

Tipe data kolom Skema Tessellation
geometri GEOMETRY_GRID
geometri GEOMETRY_AUTO_GRID
geografi GEOGRAPHY_GRID
geografi GEOGRAPHY_AUTO_GRID

Indeks spasial hanya dapat dibuat pada kolom jenis geometri atau geografi, jika tidak, kesalahan dimunculkan. Jika parameter yang tidak valid untuk jenis tertentu diteruskan, kesalahan akan muncul.

Untuk informasi tentang cara SQL Server menerapkan tessellation, lihat Gambaran Umum Indeks Spasial.

ON filegroup_name
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Membuat indeks yang ditentukan pada grup file yang ditentukan. Jika tidak ada lokasi yang ditentukan dan tabel tidak dipartisi, indeks menggunakan grup file yang sama dengan tabel yang mendasar. Grup file harus sudah ada.

AKTIF "default"
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Membuat indeks yang ditentukan pada grup file default.

Istilah default, dalam konteks ini, bukan kata kunci. Ini adalah pengidentifikasi untuk grup file default dan harus dibatasi, seperti dalam ON "default" atau ON [default]. Jika "default" ditentukan, opsi QUOTED_IDENTIFIER harus AKTIF untuk sesi saat ini. Ini adalah pengaturan default. Untuk informasi selengkapnya, lihat SET QUOTED_IDENTIFIER (Transact-SQL).

<object>::=
Adalah objek yang sepenuhnya memenuhi syarat atau tidak memenuhi syarat untuk diindeks.

database_name
Adalah nama database.

schema_name
Adalah nama skema tempat tabel berada.

table_name
Adalah nama tabel yang akan diindeks.

Azure SQL Database mendukung format nama tiga bagian database_name. [schema_name].object_name ketika database_name adalah database saat ini atau database_name tempdb dan object_name dimulai dengan #.

Opsi USING

GEOMETRY_GRID
Menentukan skema tesselulasi kisi geometri yang Anda gunakan. GEOMETRY_GRID hanya dapat ditentukan pada kolom jenis data geometri . GEOMETRY_GRID memungkinkan penyesuaian manual skema tessellation.

GEOMETRY_AUTO_GRID
Berlaku untuk: SQL Server (SQL Server 2012 (11.x) dan yang lebih baru) dan Azure SQL Database

Hanya dapat ditentukan pada kolom jenis data geometri. Ini adalah default untuk jenis data ini dan tidak perlu ditentukan.

GEOGRAPHY_GRID
Menentukan skema tesselulasi kisi geografi. GEOGRAPHY_GRID hanya dapat ditentukan pada kolom jenis data geografi .

GEOGRAPHY_AUTO_GRID
Berlaku untuk: SQL Server (SQL Server 2012 (11.x) dan yang lebih baru) dan Azure SQL Database

Hanya dapat ditentukan pada kolom jenis data geografi. Ini adalah default untuk jenis data ini dan tidak perlu ditentukan.

Opsi WITH

BOUNDING_BOX
Menentukan empat tuple numerik yang menentukan empat koordinat kotak pembatas: koordinat x-min dan y-min dari sudut kiri bawah, dan koordinat x-max dan y-max dari sudut kanan atas.

xmin
Menentukan koordinat x dari sudut kiri bawah kotak pembatas.

ymin
Menentukan koordinat y dari sudut kiri bawah kotak pembatas.

xmax
Menentukan koordinat x dari sudut kanan atas kotak pembatas.

ymax
Menentukan koordinat y dari sudut kanan atas kotak pembatas.

XMIN = xmin
Menentukan nama dan nilai properti untuk koordinat x dari sudut kiri bawah kotak pembatas.

YMIN =ymin
Menentukan nama dan nilai properti untuk koordinat y dari sudut kiri bawah kotak pembatas.

XMAX =xmax
Menentukan nama dan nilai properti untuk koordinat x sudut kanan atas kotak pembatas.

YMAX =ymax
Menentukan nama dan nilai properti untuk koordinat y sudut kanan atas kotak pembatas

Catatan

Koordinat kotak batas hanya berlaku dalam klausa USING GEOMETRY_GRID.

xmax harus lebih besar dari xmin dan ymax harus lebih besar dari ymin. Anda dapat menentukan representasi nilai float yang valid, dengan asumsi bahwa: xmax>xmin dan ymax>ymin. Jika tidak, kesalahan yang sesuai akan muncul.

Tidak ada nilai default.

Nama properti kotak pembatas tidak peka huruf besar/kecil terlepas dari kolaborasi database.

Untuk menentukan nama properti, Anda harus menentukan masing-masing sekali dan hanya sekali. Anda dapat menentukannya dalam urutan apa pun. Misalnya, klausul berikut setara:

  • BOUNDING_BOX =( XMIN =xmin, YMIN =ymin, XMAX =xmax, YMAX =ymax )

  • BOUNDING_BOX =( XMIN =xmin, XMAX =xmax, YMIN =ymin, YMAX =ymax)

GRIDS
Menentukan kepadatan kisi di setiap tingkat skema tessellation. Saat GEOMETRY_AUTO_GRID dan GEOGRAPHY_AUTO_GRID dipilih, opsi ini dinonaktifkan.

Untuk informasi tentang tessellation, lihat Gambaran Umum Indeks Spasial.

Parameter GRIDS adalah sebagai berikut:

LEVEL_1
Menentukan kisi tingkat pertama (atas).

LEVEL_2
Menentukan kisi tingkat kedua.

LEVEL_3
Menentukan kisi tingkat ketiga.

LEVEL_4
Menentukan kisi tingkat keempat.

 Rendah
Menentukan kepadatan semurah mungkin untuk kisi pada tingkat tertentu. LOW sama dengan 16 sel (kisi 4x4).

 Sedang
Menentukan kepadatan sedang untuk kisi pada tingkat tertentu. SEDANG sama dengan 64 sel (kisi 8x8).

TINGGI
Menentukan kepadatan setingkat mungkin untuk kisi pada tingkat tertentu. TINGGI sama dengan 256 sel (kisi 16x16).

Catatan

Menggunakan nama tingkat memungkinkan Anda menentukan tingkat dalam urutan apa pun dan menghilangkan tingkat. Jika Anda menggunakan nama untuk tingkat apa pun, Anda harus menggunakan nama tingkat lain yang Anda tentukan. Jika Anda menghilangkan tingkat, kepadatannya akan default ke MEDIUM.

Peringatan

Jika kepadatan yang tidak valid ditentukan, kesalahan akan muncul.

CELLS_PER_OBJECT =n
Menentukan jumlah sel tessel per objek yang dapat digunakan untuk satu objek spasial dalam indeks oleh proses tessellation. n dapat berupa bilangan bulat antara 1 dan 8192, inklusif. Jika angka yang tidak valid diteruskan atau jumlahnya lebih besar dari jumlah maksimum sel untuk tessellation yang ditentukan, kesalahan akan muncul.

CELLS_PER_OBJECT memiliki nilai default berikut:

Opsi USING Sel Default per Objek
GEOMETRY_GRID 16
GEOMETRY_AUTO_GRID 8
GEOGRAPHY_GRID 16
GEOGRAPHY_AUTO_GRID 12

Di tingkat atas, jika objek mencakup lebih banyak sel daripada yang ditentukan oleh n, pengindeksan menggunakan sel sebanyak yang diperlukan untuk menyediakan tessellation tingkat atas lengkap. Dalam kasus seperti itu, objek mungkin menerima lebih dari jumlah sel yang ditentukan. Dalam hal ini, jumlah maksimum adalah jumlah sel yang dihasilkan oleh kisi tingkat atas, yang tergantung pada kepadatan.

Nilai CELLS_PER_OBJECT digunakan oleh aturan tessel per objek. Untuk informasi tentang aturan tessellation, lihat Gambaran Umum Indeks Spasial.

PAD_INDEX = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Menentukan padding indeks. Defaultnya adalah NONAKTIF.

AKTIF
Menunjukkan bahwa persentase ruang kosong yang ditentukan oleh fillfactor diterapkan ke halaman tingkat menengah indeks.

OFF atau fillfactor tidak ditentukan
Menunjukkan bahwa halaman tingkat menengah diisi ke kapasitas dekat, menyisakan ruang yang cukup untuk setidaknya satu baris dengan ukuran maksimum yang dapat dimiliki indeks, mengingat set kunci pada halaman perantara.

Opsi PAD_INDEX hanya berguna ketika FILLFACTOR ditentukan, karena PAD_INDEX menggunakan persentase yang ditentukan oleh FILLFACTOR. Jika persentase yang ditentukan untuk FILLFACTOR tidak cukup besar untuk memungkinkan satu baris, Mesin Database secara internal mengambil alih persentase untuk memungkinkan minimum. Jumlah baris pada halaman indeks menengah tidak pernah kurang dari dua, terlepas dari seberapa rendah nilai fillfactor.

FILLFACTOR =fillfactor
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Menentukan persentase yang menunjukkan seberapa lengkap Mesin Database harus membuat tingkat daun setiap halaman indeks selama pembuatan atau pembangunan ulang indeks. fillfactor harus berupa nilai bilangan bulat dari 1 hingga 100. Defaultnya adalah 0. Jika fillfactor adalah 100 atau 0, Mesin Database membuat indeks dengan halaman daun yang diisi hingga kapasitas.

Catatan

Nilai faktor pengisian 0 dan 100 sama dalam semua hal.

Pengaturan FILLFACTOR hanya berlaku saat indeks dibuat atau dibangun kembali. Mesin Database tidak secara dinamis menyimpan persentase ruang kosong yang ditentukan di halaman. Untuk melihat pengaturan faktor pengisian, gunakan tampilan katalog sys.indexes .

Penting

Membuat indeks berkluster dengan FILLFACTOR kurang dari 100 memengaruhi jumlah ruang penyimpanan yang ditempati data karena Mesin Database mendistribusikan ulang data saat membuat indeks berkluster.

Untuk informasi selengkapnya, lihat Menentukan Faktor Pengisian untuk Indeks.

SORT_IN_TEMPDB = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Menentukan apakah akan menyimpan hasil pengurutan sementara dalam tempdb. Defaultnya adalah NONAKTIF.

AKTIF
Hasil pengurutan menengah yang digunakan untuk membangun indeks disimpan dalam tempdb. Ini dapat mengurangi waktu yang diperlukan untuk membuat indeks jika tempdb berada di kumpulan disk yang berbeda dari database pengguna. Namun, ini meningkatkan jumlah ruang disk yang digunakan selama build indeks.

TIDAK AKTIF
Hasil pengurutan menengah disimpan dalam database yang sama dengan indeks.

Selain ruang yang diperlukan dalam database pengguna untuk membuat indeks, tempdb harus memiliki jumlah ruang tambahan yang sama untuk menyimpan hasil pengurutan menengah. Untuk informasi selengkapnya, lihat Opsi SORT_IN_TEMPDB Untuk Indeks.

IGNORE_DUP_KEY =NONAKTIF
Tidak berpengaruh untuk indeks spasial karena jenis indeks tidak pernah unik. Jangan atur opsi ini ke AKTIF, atau kesalahan dimunculkan.

STATISTICS_NORECOMPUTE = { AKTIF | OFF}
Menentukan apakah statistik distribusi dikomputasi ulang. Defaultnya adalah NONAKTIF.

AKTIF
Statistik kedaluarsa tidak dikomputasi ulang secara otomatis.

TIDAK AKTIF
Pembaruan statistik otomatis diaktifkan.

Untuk memulihkan pembaruan statistik otomatis, atur STATISTICS_NORECOMPUTE ke NONAKTIF, atau jalankan UPDATE STATISTICS tanpa klausa NORECOMPUTE.

Penting

Menonaktifkan komputasi ulang statistik distribusi otomatis dapat mencegah pengoptimal kueri memilih rencana eksekusi yang optimal untuk kueri yang melibatkan tabel.

DROP_EXISTING = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Menentukan bahwa indeks spasial bernama yang sudah ada sebelumnya dihilangkan dan dibangun kembali. Defaultnya adalah NONAKTIF.

AKTIF
Indeks yang ada dihilangkan dan dibangun kembali. Nama indeks yang ditentukan harus sama dengan indeks yang ada saat ini; namun, definisi indeks dapat dimodifikasi. Misalnya, Anda dapat menentukan kolom, urutan pengurutan, skema partisi, atau opsi indeks yang berbeda.

TIDAK AKTIF
Kesalahan ditampilkan jika nama indeks yang ditentukan sudah ada.

Tipe indeks tidak dapat diubah dengan menggunakan DROP_EXISTING.

ONLINE =NONAKTIF
Menentukan bahwa tabel yang mendasari dan indeks terkait tidak tersedia untuk kueri dan modifikasi data selama operasi indeks. Dalam versi SQL Server ini, build indeks online tidak didukung untuk indeks spasial. Jika opsi ini diatur ke AKTIF untuk indeks spasial, kesalahan akan muncul. Hilangkan opsi ONLINE atau atur ONLINE ke NONAKTIF.

Operasi indeks offline yang membuat, membangun kembali, atau menghilangkan indeks spasial, memperoleh kunci Modifikasi Skema (Sch-M) pada tabel. Ini mencegah semua akses pengguna ke tabel yang mendasar selama durasi operasi.

Catatan

Operasi indeks online tidak tersedia di setiap edisi SQL Server. Untuk daftar fitur yang didukung oleh edisi SQL Server, lihat Fitur yang Didukung oleh Edisi SQL Server 2016.

ALLOW_ROW_LOCKS = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Menentukan apakah kunci baris diizinkan. Defaultnya adalah ON.

AKTIF
Kunci baris diperbolehkan saat mengakses indeks. Mesin Database menentukan kapan kunci baris digunakan.

TIDAK AKTIF
Kunci baris tidak digunakan.

ALLOW_PAGE_LOCKS = { AKTIF | NONAKTIF }
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Menentukan apakah kunci halaman diizinkan. Defaultnya adalah ON.

AKTIF
Kunci halaman diizinkan saat mengakses indeks. Mesin Database menentukan kapan kunci halaman digunakan.

TIDAK AKTIF
Kunci halaman tidak digunakan.

MAXDOP =max_degree_of_parallelism
Berlaku untuk: SQL Server (SQL Server 2008 (10.0.x) dan yang lebih baru) dan Azure SQL Database

Mengesampingkan max degree of parallelism opsi konfigurasi selama durasi operasi indeks. Gunakan MAXDOP untuk membatasi jumlah prosesor yang digunakan dalam eksekusi rencana paralel. Maksimum adalah 64 prosesor.

Penting

Meskipun opsi MAXDOP didukung secara sinonis, CREATE SPATIAL INDEX saat ini hanya menggunakan satu prosesor.

max_degree_of_parallelism dapat berupa:

1
Menekan pembuatan rencana paralel.

>1
Membatasi jumlah maksimum prosesor yang digunakan dalam operasi indeks paralel ke jumlah yang ditentukan atau lebih sedikit berdasarkan beban kerja sistem saat ini.

0 (default)
Menggunakan jumlah prosesor aktual atau lebih sedikit berdasarkan beban kerja sistem saat ini.

Untuk informasi selengkapnya, lihat Mengonfigurasi Operasi Indeks Paralel.

Catatan

Operasi indeks paralel tidak tersedia di setiap edisi Microsoft SQL Server. Untuk daftar fitur yang didukung oleh edisi SQL Server, lihat Fitur yang Didukung oleh Edisi SQL Server 2016.

DATA_COMPRESSION = {NONE | ROW | PAGE}
Berlaku untuk: SQL Server (SQL Server 2012 (11.x) dan yang lebih baru) dan Azure SQL Database

Menentukan tingkat kompresi data yang digunakan oleh indeks.

NONE
Tidak ada pemadatan yang digunakan pada data oleh indeks

BARIS
Pemadatan baris yang digunakan pada data oleh indeks

PAGE
Pemadatan halaman yang digunakan pada data oleh indeks

Keterangan

Setiap opsi hanya dapat ditentukan sekali per pernyataan CREATE SPATIAL INDEX. Menentukan duplikat opsi apa pun menimbulkan kesalahan.

Anda dapat membuat hingga 249 indeks spasial pada setiap kolom spasial dalam tabel. Membuat lebih dari satu indeks spasial pada kolom spasial tertentu dapat berguna, misalnya, untuk mengindeks parameter tessellation yang berbeda dalam satu kolom.

Penting

Ada sejumlah batasan lain dalam membuat indeks spasial. Untuk informasi selengkapnya, lihat Gambaran Umum Indeks Spasial.

Build indeks tidak dapat menggunakan paralelisme proses yang tersedia.

Metode yang didukung pada indeks spasial

Dalam kondisi tertentu, indeks spasial mendukung sejumlah metode geometri berorientasi set. Untuk informasi selengkapnya, lihat Gambaran Umum Indeks Spasial.

Indeks spasial dan partisi

Secara default, jika indeks spasial dibuat pada tabel yang dipartisi, indeks dipartisi sesuai dengan skema partisi tabel. Ini memastikan bahwa data indeks dan baris terkait disimpan dalam partisi yang sama.

Dalam hal ini, untuk mengubah skema partisi tabel dasar, Anda harus menghilangkan indeks spasial sebelum Anda dapat mempartisi ulang tabel dasar. Untuk menghindari pembatasan ini, saat Membuat indeks spasial, Anda dapat menentukan opsi "ON filegroup". Untuk informasi selengkapnya, lihat "Indeks Spasial dan Grup File," nanti dalam topik ini.

Indeks spasial dan grup file

Secara default, indeks spasial dipartisi ke grup file yang sama dengan tabel tempat indeks ditentukan. Ini dapat ditimpa dengan menggunakan spesifikasi grup file:

[ ON { filegroup_name | "default" } ]
Jika Anda menentukan grup file untuk indeks spasial, indeks ditempatkan pada grup file tersebut, terlepas dari skema pemartisian tabel.

Tampilan katalog untuk indeks spasial

Tampilan katalog berikut khusus untuk indeks spasial:

sys.spatial_indexes
Mewakili informasi indeks utama indeks spasial.

sys.spatial_index_tessellations
Mewakili informasi tentang skema tessellation dan parameter masing-masing indeks spasial.

Komentar tambahan tentang membuat indeks

Untuk informasi selengkapnya tentang membuat indeks, lihat bagian "Keterangan" di CREATE INDEX (Transact-SQL).

Izin

Pengguna harus memiliki ALTER izin pada tabel atau tampilan, atau menjadi anggota peran server tetap sysadmin atau db_ddladmin peran database tetap dan db_owner .

Contoh

J. Membuat indeks spasial pada kolom geometri

Contoh berikut membuat tabel bernama SpatialTable yang berisi kolom jenis geometri , geometry_col. Contoh kemudian membuat indeks spasial, SIndx_SpatialTable_geometry_col1, pada geometry_col. Contoh menggunakan skema tessellation default dan menentukan kotak pembatas.

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. Membuat indeks spasial pada kolom geometri

Contoh berikut membuat indeks spasial kedua, SIndx_SpatialTable_geometry_col2, pada geometry_col dalam SpatialTable tabel. Contoh menentukan GEOMETRY_GRID sebagai skema tessellation. Contoh ini juga menentukan kotak pembatas, kepadatan yang berbeda pada tingkat kisi yang berbeda, dan 64 sel per objek. Contoh ini juga mengatur padding indeks ke ON.

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. Membuat indeks spasial pada kolom geometri

Contoh berikut membuat indeks spasial ketiga, SIndx_SpatialTable_geometry_col3, pada geometry_col dalam SpatialTable tabel. Contoh menggunakan skema tessellation default. Contoh menentukan kotak pembatas dan menggunakan kepadatan sel yang berbeda pada tingkat ketiga dan keempat, saat menggunakan jumlah sel default per objek.

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. Mengubah opsi yang khusus untuk indeks spasial

Contoh berikut membangun kembali indeks spasial yang dibuat dalam contoh sebelumnya, SIndx_SpatialTable_geography_col3, dengan menentukan kepadatan baru LEVEL_3 dengan DROP_EXISTING = AKTIF.

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. Membuat indeks spasial pada kolom geografi

Contoh berikut membuat tabel bernama SpatialTable2 yang berisi kolom jenis geografi , geography_col. Contoh kemudian membuat indeks spasial, SIndx_SpatialTable_geography_col1, pada geography_col. Contoh menggunakan nilai parameter default dari skema tessellation GEOGRAPHY_AUTO_GRID.

CREATE TABLE SpatialTable2(id int primary key, object GEOGRAPHY);  
CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col1
   ON SpatialTable2(object);  

Catatan

Untuk indeks kisi geografi, kotak pembatas tidak dapat ditentukan.

F. Membuat indeks spasial pada kolom geografi

Contoh berikut membuat indeks spasial kedua, SIndx_SpatialTable_geography_col2, pada geography_col dalam SpatialTable2 tabel. Contoh menentukan GEOGRAPHY_GRID sebagai skema tessellation. Contoh ini juga menentukan kepadatan kisi yang berbeda pada tingkat yang berbeda dan 64 sel per objek. Contoh ini juga mengatur padding indeks ke ON.

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. Membuat indeks spasial pada kolom geografi

Contoh kemudian membuat indeks spasial ketiga, SIndx_SpatialTable_geography_col3, pada geography_col dalam SpatialTable2 tabel. Contoh menggunakan skema tesselulasi default, GEOGRAPHY_GRID, dan nilai CELLS_PER_OBJECT default (16).

CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col3  
   ON SpatialTable2(object)  
   WITH ( GRIDS = ( LEVEL_3 = HIGH, LEVEL_2 = HIGH ) );  

Baca juga

ALTER INDEX (Transact-SQL)
BUAT INDEKS (Transact-SQL)
MEMBUAT FUNGSI PARTISI (Transact-SQL)
MEMBUAT SKEMA PARTISI (Transact-SQL)
MEMBUAT STATISTIK (Transact-SQL)
BUAT TABEL (Transact-SQL)
Tipe Data (Transact-SQL)
DBCC SHOW_STATISTICS (Transact-SQL)
DROP INDEX (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.index_columns (T-SQL)
sys.indexes (Transact-SQL)
sys.spatial_index_tessellations (T-SQL)
sys.spatial_indexes (T-SQL)
Gambaran Umum Indeks Spasial