我見過類似的文章,但沒有確定的答案。SQL SERVER - 使用BETWEEN運算符有效地連接兩個表
我使用GEOLITE上(免費數據庫)來搜索的IP塊,以地理IP,想做到這一點的本體 -
相應的IP的已經被轉換成ipblocks,坐在一張桌子(L )。
每個ipblock都在一個範圍內(在startIpNum和endIpNum之間),它位於另一個表(g)中。
下面作品查詢,但是,是極其低效尤其是因爲我需要在大的時間週期執行這一 -
SELECT l.ipAddress, g.locId
FROM l
INNER JOIN g ON l.ipblock BETWEEN g.startIpNum AND g.endIpNum
這兩個表進行索引(g是化合物索引),
甲由於連接是在BETWEEN運算符上進行的,因此無法執行HASH連接。
是唯一可行的選項重組表g?或者有另一種方式?
什麼是「複合索引」是什麼意思?在哪些列上? 'b.locId'從哪裏來? – 2014-09-22 20:42:12
另外你爲什麼會認爲散列連接在這裏會有用? – 2014-09-22 20:51:42
感謝您的回覆。翻譯從我的母語:)我的意思是一個複合索引,而不是一個複合索引。這是在startIpNum和endIpNum – aborg88 2014-09-22 20:58:11