Saya mencoba untuk memindahkan rutin Geoprocessing sederhana dari proses berbasis ESRI ke SQL Server. Asumsi saya adalah bahwa itu akan jauh lebih efisien. Untuk pengujian awal saya, saya mengerjakan rutin persimpangan untuk mengasosiasikan data linier yang tumpang tindih.
Dalam tabel WCASING saya, saya memiliki 1610 catatan. Saya mencoba mengaitkan Casing ini dengan induknya yang terkait. Saya memiliki ~ 277.000 Listrik. Saya memiliki ~ 1.600 Selubung.
Saya menjalankan kueri di bawah ini untuk mendapatkan gambaran umum tentang berapa lama waktu yang dibutuhkan untuk menemukan kecocokan individu. Kueri ini mengembalikan 5 persimpangan yang valid dalam 40 detik.
SELECT Top 5 [WCASING].[OBJECTID] As CasingOBJECTID,
[WPUMPPRESSUREMAIN].[OBJECTID] AS MainObjectID, [WCASING].[Shape]
FROM [dbo].[WPUMPPRESSUREMAIN]
JOIN [WCASING]
ON [WCASING].[Shape].STIntersects([WPUMPPRESSUREMAIN].[Shape]) = 1
Pertanyaan Utama saya;
Apakah proses ini lebih cepat tergantung pada urutan pencarian?
- Menemukan 'A' di dalam 'B' vs
- Menemukan 'B' di dalam 'A'
- Pengembalian awal pada 5 catatan dari dataset ini adalah bahwa itu tidak masalah
Akankah proses ini lebih cepat, jika saya buffer dulu membatasi ke set utama yang lebih kecil dan kemudian mencari?
Bisakah saya menggunakan SQL Server Tuning untuk bekerja dengan kueri berbasis Geometri?
SELECT WCASING.OBJECTID AS CasingOBJECTID,
WPUMPPRESSUREMAIN.OBJECTID AS MainObjectID, WCASING.UFID AS UFID,
WPUMPPRESSUREMAIN_IPS.UFID AS MainUFID, WCASING.SHAPE
INTO WCASING_INTDefsV6
FROM WCASING with (index([FDO_ShapeWC]))
INNER JOIN [WPUMPPRESSUREMAIN_IPS] ON
[WPUMPPRESSUREMAIN_IPS].Shape.STIntersects(WCASING.SHAPE) = 1
Permintaan baru ini telah meningkatkan definisi.
- Sekarang kedua tabel memiliki indeks spasial
- Sebelumnya Casing Table (Lebih Kecil) tidak memiliki Indeks Spasial
- Itu memang mengandung Indeks Non-Clustered
Permintaan juga memiliki pernyataan dengan indeks.
Permintaan baru butuh 37 menit. Permintaan lama butuh 44 menit.
Saya berharap untuk hasil yang lebih baik dan akan terus menguji.