郵便番号検索や住所補完の業務では、都道府県+市区町村+町域を条件にした検索が必要になることがあります。
SQLiteでは複合インデックスを作成することで、こうした複数列検索を高速化できます。
インデックス作成SQL
-- 郵便番号テーブルの作成例
CREATE TABLE PostalTable (
PostalCode TEXT PRIMARY KEY,
Prefecture TEXT,
City TEXT,
Town TEXT
);
-- 複合インデックスを作成(都道府県+市区町村+町域)
CREATE INDEX idx_pref_city_town ON PostalTable(Prefecture, City, Town);
SQLこのインデックスにより、「東京都+渋谷区+渋谷」 のような検索が最適化されます。
VBAコード例(SQLite+複合インデックス検索)
Sub QueryPostalSQLiteCompositeIndexTown()
Dim conn As Object, rs As Object
Dim dbPath As String
Dim pref As String, city As String, town As String
dbPath = "C:\data\PostalCache.sqlite"
' SQLite接続(ODBCドライバ利用)
Set conn = CreateObject("ADODB.Connection")
conn.Open "Driver=SQLite3 ODBC Driver;Database=" & dbPath & ";"
' 検索条件(例:東京都+渋谷区+渋谷)
pref = "東京都"
city = "渋谷区"
town = "渋谷"
' 複合インデックスを利用した検索
Set rs = conn.Execute("SELECT PostalCode FROM PostalTable WHERE Prefecture='" & pref & "' AND City='" & city & "' AND Town='" & town & "'")
' 結果を出力(Immediate Windowに表示)
Do Until rs.EOF
Debug.Print "郵便番号: " & rs.Fields(0).Value
rs.MoveNext
Loop
rs.Close
conn.Close
End Sub
VB実行イメージ
検索条件:東京都+渋谷区+渋谷
| 郵便番号 |
|---|
| 1500002 |
| 1500003 |
| 1500004 |
実務での応用
- 配送ラベル作成 → 都道府県+市区町村+町域単位で郵便番号を補完
- 地域別マーケティング分析 → 特定の町域に絞った顧客抽出
- 不正データ検出 → 存在しない町域を検索して「不明」と判定
- 検索最適化 → 複合インデックスにより「都道府県+市区町村+町域」検索が高速化
💡 この方法を使えば、町域レベルまで細かい検索を最適化でき、地域別の顧客管理や配送業務がさらに効率化します。


