2012-06-21 26 views
2

說我想找到離我最近的20個商家。後者我想看到接近的20個,等等。是的,我有myisam。我有空間索引的重點。我正在尋找我應該發送的實際SQL命令。如何找到積分,根據親密度進行排序,並得到1-20,21-40等。高效地使用Myisam和mysql以及空間索引

要清楚:

注:

  1. 我使用MySQL的的MyISAM空間索引。我反覆上網瀏覽谷歌,並沒有發現任何關於我的確切需求。
  2. 我不想爲整個表計算 距離(這太無效了)。空間索引的整個觀點是,至少你可以有效地去除很多點。如果某些指向左側和上方的資格不合格,那麼所有指向該點的左側和上方的點都不符合要求。
  3. 我不想計算距離爲 任何地區仍然效率低下。我感興趣的地區是10公里,那裏有65,000家企業。
  4. 我不介意計算距離 爲點的合理數量的,因爲我想點由 距離和排序能夠顯示點1-20,21-40,41-60,等等
  5. 我發現postgis的一種方法http://blog.opengeo.org/2011/09/28/indexed-nearest-neighbour-search-in-postgis/我想要類似的東西,但對於MySQL myisam。
  6. 我想要一個帶有實際sql代碼的網站作爲示例或實際的示例sql命令。所以請不要只說「使用空間」。咄。我知道。我想要實際的sql命令。
  7. 我不想先做一個小區域搜索的複雜循環。必須有一個sql命令可以通過mysql引擎有效地完成這一操作。
  8. 笛卡爾距離很好。沒有必要知道我們生活在一個地球上,除非你在北極或南極,而這不是我們大多數客戶的地方。

有160萬bizs。當然,爲所有人計算距離然後對其進行分類是很愚蠢的。

這就是地理空間索引踢的權利?

那麼我需要發送什麼SQL命令?

回答

1

由於我不能評論你的問題,我想我將不得不離開這個答案。

看這個問題:

https://gis.stackexchange.com/questions/22082/how-can-i-use-r-tree-to-find-points-within-a-distance-in-spatialite

環顧文檔了一下,在那個MyISAM提供的功能似乎並不有一個好辦法做到這一點。

+0

您是否試圖說我應該轉向mongodb,因爲它對於我的應用程序能夠進行空間搜索是絕對重要的。 –

+0

+1。你應該能夠很快發表評論。 –

+1

http://blog.opengeo.org/2011/09/28/indexed-nearest-neighbour-search-in-postgis/ 我會轉移到PostGIS。它似乎直接支持您需要的功能。 希望這會有所幫助。我不是很熟悉GIS的東西,這是所有搜索結果。 –

相關問題