我正在處理一個龐大的數據庫並試圖對其進行優化。如果在函數中使用它們的值,我應該在列上創建一個索引嗎? (SQLite)
我想知道是否會進行任何更改,以索引在請求中用作條件的值,但通過函數進行索引。
,比如我有這個GPS座標表:
-Node (#id,lat,lng)
和這個請求:
SELECT * FROM Node WHERE distance(lat, lng, $lat, $lng) < $threshold
將建立在緯度和經度的指數作任何優化? (我使用SQLite工作)
感謝
編輯我只是想到了同樣的問題,但如果我的計算,直接,如:
SELECT * FROM Node WHERE (lat-$lat)*(lat-$lat) + (lng-$lng)*(lng-$lng) < $threshold
我不相信距離()是在這種情況下,聚合函數,除非它從所有行來計算距離使用的數據;它看起來像計算經度/緯度兩點之間的笛卡爾距離,並根據輸入值返回給函數本身的單個值,而不是從表結果集,使其成爲標量函數。 – 2010-07-19 18:31:41
是的,實際上它是一個標量函數。謝謝。 – Julien 2010-07-19 18:38:49