郵便番号検索だけでなく、都道府県+市区町村単位で顧客データを集計・検索したいケースは多いです。
SQLiteでは 複合インデックス を作成することで、複数列を条件にした検索を高速化できます。
インデックス作成SQL
-- 郵便番号テーブルの作成例
CREATE TABLE PostalTable (
PostalCode TEXT PRIMARY KEY,
Prefecture TEXT,
City TEXT,
Town TEXT
);
-- 複合インデックスを作成(都道府県+市区町村)
CREATE INDEX idx_pref_city ON PostalTable(Prefecture, City);
SQLVBAコード例(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 | 鶯谷町 |
実務での応用
- 地域別集計 → 都道府県+市区町村単位で顧客数や売上を分析
- 配送ラベル作成 → 郵便番号を補完しつつ地域別に出力
- マーケティング分析 → 特定の都市圏の顧客を抽出してターゲティング
- 検索最適化 → 複合インデックスにより「都道府県+市区町村」検索が高速化
💡 複合インデックスを使うと、地域単位の検索や集計が劇的に高速化されます。

