測試環境
資料庫:oracle11g r1(11.1.0.6) 64bit
中介軟體:arcsde10 (64bit)
資料情況:點資料(point,231772條記錄),面資料(poly,12條記錄)如下圖所示
1:st_geometry操作符的選擇
測試內容
測試面狀要素所包含的點狀要素的數量以及內容
測試結果
我使用兩種方式分別進行相關測試,一種是利用面包含點的方式(contains),一種是利用點在面內部的方式(within),我們看看這兩種方式有什麼區別
第一種方式:
檢視執行計畫可以看出,使用st_contains走的全表掃瞄(table access full)
第二種方式:
從執行計畫可以看出,使用st_within走的是索引。
測試結果分析
從上面的測試結果我們可以看出(有可能是某個點剛好在面的邊界上,致使contain和within的查詢數量不同),使用不同的查詢方式,得出結果的時間卻差距很大,這是為什麼呢?
在st_geometry操作符的使用過程中,有些操作符是走空間索引的如st_within函式,但是有些操作符是不走空間索引的如st_contains函式,那麼我們在使用st函式的過程中一定要盡量使用走空間索引的操作符,那麼那些操作符走空間索引呢?
從上面我們可以看到列舉出來的操作符是走空間索引的,沒有列出了的是不走空間索引的,該走全表掃瞄。宣告一下:各個資料庫可能操作符不一樣。
2:st_geometry操作符的所傳遞的物件位置順序
測試內容
測試面狀要素所包含的點狀要素的數量以及內容
測試結果
我們使用兩種方式進行測試。這次我們都用st_intersects進行測試,從上面我們可以看到這個操作符是走空間索引的。
第一種方式
第二種方式
測試分析
從上面的示例可以看出,調換了一下傳入引數的位置,得到結果的時間差別仍然很大。
由第一種方法可以看到,使用時間與示例一的contains時間大致一致,走的也應該是全表掃瞄,第一種方式是全表掃瞄每乙個點,然後將該點與面進行比較獲得結果,第二種方式是全表掃瞄每乙個面,然後將該面與點進行比較得到結果,面與點的比較走的是點的索引,可見第二種方式效率更高。
如果使用者感覺這個比較麻煩不好記憶,使用者只需要記住將資料量小的放在函式傳入值的後面即可。即st_intersacts(資料量大,資料量小)。
3:st_geometry操作符與屬性條件位置順序
測試內容
測試面狀要素所包含的點狀要素的數量以及內容,但是可能包含以下屬性過濾條件。
測試結果
第一種方法
第二種方法
不管是第一種方法還是第二種方法執行時間基本差不多,執行計畫也是一樣的,所以說,當針對查詢條件有屬性過濾條件的,是先走的屬性條件,再走的空間條件,所以說針對哪個屬性過濾需要注意的是建立相關的屬性索引。
ST Geometry效率的測試與分析
測試環境 資料庫 oracle11g r1 11.1.0.6 64bit 中介軟體 arcsde10 64bit 資料情況 點資料 point,231772條記錄 面資料 poly,12條記錄 如下圖所示 1 st geometry操作符的選擇 測試內容 測試面狀要素所包含的點狀要素的數量以及內容 ...
ST Geometry 的空間運算函式
空間運算利用幾何函式來接收輸入的空間資料,對其進行分析,然後生成輸出資料,輸出資料為針對輸入資料執行分析的派生結果。完成以下操作可從輸入資料建立新資料。st buffer 函式通過在指定距離圈定幾何生成乙個幾何。緩衝主要幾何時或者當某個集合的緩衝多邊形相距足夠近會重疊時,將生成單獨的多邊形。當被緩衝...
效能測試(效率)
定義 performance testing 測試該軟體在整合系統中的執行效能。大多使用工具測試 目標 度量系統相對與預定義目標的差距。實施 1.效能指標定義明確。2.構造效能測試研究資料。3.構造不同的效能測試場景。4.執行效能測試 一般 90 就通過 5.效能分析。6.效能故障定位。7.效能優化...