MongoDBにインデックスを作成する

MongoDBに郵便番号と住所のデータを登録しました。

MongoDBに一括でデータを登録する(Bulk Inserts)


郵便番号をキーに住所を検索してみます。



住所検索プログラム



郵便番号が0591615のデータを検索して見ます。


#!/usr/bin/env python
# -*- coding:utf-8 -*-

from pymongo import Connection
from pymongo.objectid import ObjectId
import time

t1 = time.time()

#コネクション作成
con = Connection('192.168.1.245', 27017)

#コネクションからtestデータベースを取得
db = con.test

#testデータベースからyubinコレクションを取得
col = db.yubin

for data in col.find({u'zip_code': u'0591615'}):
    print data['address']

con.disconnect()

print time.time() - t1, 'sec'




実行してみると・・・


c:\>python sample.py
北海道勇払郡厚真町高丘
0.253999948502 sec

c:\>python sample.py
北海道勇払郡厚真町高丘
0.305000066757 sec

c:\>python sample.py
北海道勇払郡厚真町高丘
0.205999851227 sec



12万件のデータ検索に0.25秒とそれなりに高速なのですが、Indexをつけて
さらに高速にしてみます。



Indexの付与



zip_codeに対してIndexを作成します。


#!/usr/bin/env python
# -*- coding:utf-8 -*-

from pymongo import Connection
from pymongo import ASCENDING, DESCENDING

#コネクション作成
con = Connection('192.168.1.245', 27017)

#コネクションからtestデータベースを取得
db = con.test

#testデータベースからyubinコレクションを取得
col = db.yubin

col.create_index([("zip_code", ASCENDING)])

con.disconnect()




この後、同じ検索プログラムを実行すると・・・



c:\>python sample.py
北海道勇払郡厚真町高丘
0.0139999389648 sec

c:\>python sample.py
北海道勇払郡厚真町高丘
0.0130000114441 sec

c:\>python sample.py
北海道勇払郡厚真町高丘
0.0130000114441 sec



0.01秒まで縮まりました
すばらしい。



関連記事

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ