2016-07-28 4 views
0

です。これは私のSQLite DBです。この選択肢の中で最も速いパフォーマンスを得るためにはどのようなインデックスを作成しなければなりません。私の選択に使用するインデックスは

select way_id,way_pos,lat,lon,tag 
from way_nodes 
join nodes using(node_id) 
join ways_tags using(way_id) 
where lat < someValue1 
and lat > someValue2 
and lon < someValue3 
and lon > someValue4 
order by way_nodes.way_id, way_pos; 

さて、この選択は(百万個のノード、140万ways_nodes、CCA 100の000の方法、より多くの)40秒を要しました。私はインデックスを遅くする場合、私は気にしないでください選択を使用してIm ..

+0

DBスキーマを表示してください。 –

+0

1行目にリンクがあります。 https://s32.postimg.org/fr2ycrtf9/image.png –

答えて

0

実際に有用であると推定されるインデックスを見つけるには、use EXPLAIN QUERY PLAN

インデックスをlatおよび/またはlonに使用すると、おそらくあまり役​​に立ちません。

多次元区間のクエリを最適化する方法はありません。ただし、そのために設計されたインデックスを使用する以外は、R-treeです。

+0

私は可能なすべてのインデックスの組み合わせを試していましたが、何とか私は800ミリ秒にそれを減らしますが、私はそれを削除し、今はどのインデックスが働いたのかわかりません。 –

+0

テーブルノード、ways_nodes、ways_tagsを1つ大きなテーブルに結合するとどうなりますか?どのインデックスを使用すればよいですか? –

関連する問題