我有一個包含〜40k行樣本集的表,每行包含一個點(經度和緯度)。我使用MySQL的空間擴展來查找邊界內存在哪些點。MySQL不使用可能的索引 - 爲什麼?
如果我在一個我知道的邊界內搜索的結果很少,那麼該索引就會被使用。但是,我的測試數據集主要由英國各地的位置組成(並且較大的實時數據集可能在百分比方面相似)。當我這個邊界框進行搜索,索引不習慣,而是執行全表掃描:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE ep ALL PRIMARY,location NULL NULL NULL 37221 Using where
所以它好像MySQL是決定何時行數,預計忽略指數發現接近總行數。
是這種情況,如果是這樣,我可以強制使用索引或以其他方式確保避免全表掃描嗎?
發佈您的查詢。有可能的是你會得到很多結果。在這種情況下,避免遍歷索引以返回大量結果,因爲它不是必需的。 – 2012-03-29 11:55:11
另外,如果你可以發佈'table_structure'也不錯。 – 2012-03-29 12:15:31