Excel VBA | SQLiteに複合インデックスを付けて「都道府県+市区町村」で検索最適化する応用例

VBA
スポンサーリンク

郵便番号検索だけでなく、都道府県+市区町村単位で顧客データを集計・検索したいケースは多いです。
SQLiteでは 複合インデックス を作成することで、複数列を条件にした検索を高速化できます。


インデックス作成SQL

-- 郵便番号テーブルの作成例
CREATE TABLE PostalTable (
    PostalCode TEXT PRIMARY KEY,
    Prefecture TEXT,
    City TEXT,
    Town TEXT
);

-- 複合インデックスを作成(都道府県+市区町村)
CREATE INDEX idx_pref_city ON PostalTable(Prefecture, City);
SQL

VBAコード例(SQLite+複合インデックス検索)

Sub QueryPostalSQLiteCompositeIndex()
    Dim conn As Object, rs As Object
    Dim dbPath As String, pref As String, city As String
    
    dbPath = "C:\data\PostalCache.sqlite"
    
    ' SQLite接続(ODBCドライバ利用)
    Set conn = CreateObject("ADODB.Connection")
    conn.Open "Driver=SQLite3 ODBC Driver;Database=" & dbPath & ";"
    
    ' 検索条件(例:東京都+渋谷区)
    pref = "東京都"
    city = "渋谷区"
    
    ' 複合インデックスを利用した検索
    Set rs = conn.Execute("SELECT PostalCode, Town FROM PostalTable WHERE Prefecture='" & pref & "' AND City='" & city & "'")
    
    ' 結果を出力(Immediate Windowに表示)
    Do Until rs.EOF
        Debug.Print rs.Fields(0).Value & " → " & rs.Fields(1).Value
        rs.MoveNext
    Loop
    
    rs.Close
    conn.Close
End Sub
VB

実行イメージ

検索条件:東京都+渋谷区

郵便番号町域
1500001神宮前
1500002渋谷
1500003道玄坂
1500004鶯谷町

実務での応用

  • 地域別集計 → 都道府県+市区町村単位で顧客数や売上を分析
  • 配送ラベル作成 → 郵便番号を補完しつつ地域別に出力
  • マーケティング分析 → 特定の都市圏の顧客を抽出してターゲティング
  • 検索最適化 → 複合インデックスにより「都道府県+市区町村」検索が高速化

💡 複合インデックスを使うと、地域単位の検索や集計が劇的に高速化されます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました