見出し画像

[SQL Tips] 大規模データセットのパフォーマンス向上: 最も近い地点を素早く見つける

例えば、ある地点の海抜の高さを示すデータがあるとします。このデータは、陸地の場合は最低でも30mの精度、場合によっては0.5mやそれ以下の精度で存在します。海の場合でも500mレベルであれば深度の全世界データがあります。これらのデータがすべて一つのテーブルAにあり、テーブルAには緯度、経度、そして高さ・深さが記録されているとします。仮にあなたが100箇所のウエザーステーションの標高を知りたいとしましょう。テーブルBには100箇所の名前と緯度、経度が入っています。

ここで、テーブルAには10億行レベルの大量のデータがあり、テーブルBには調べたい場所の情報が入っています。どうすれば、テーブルAから一番近い場所の情報を効率的に取り出せるでしょうか?

単純に考えると、テーブルBの1行目、つまりある場所Bに一番近い緯度・経度をテーブルAから探す場合、10億以上の地点とBとの距離をすべて測って一番近いものを選ぶという方法があります。しかし、この方法では1つ1つの場所と10億箇所との距離を計算するため、非常に時間がかかります。

さて、どうすべきでしょうか?

ここから先は

2,268字
1度限りなのでマガジンで購入される方が断然お得です

Google BigQueryなどSQLを使う場はこれまでもそしてこれからも存在します。このマガジンでは、アメリカのデータエンジニアやデー…

この記事が気に入ったらサポートをしてみませんか?