basyura's blog

あしたになったらほんきだす。

全件検索の時間

スキーマ定義

unless DB.table_exists? :users
  DB.create_table :users do
      primary_key :id
      String :screen_name, :unique => true
      String :uid
      String :name
      varchar :description , :length => 500
      varchar :profile_image_url , :length => 500
      varchar :url , :length => 500
      integer :utc_offset
      String :time_zone
      String :location
      integer :followers_count
      integer :friends_count
      integer :statuses_count
  end
  DB.add_index :users, :screen_name
end

比較用プログラム

require 'rubygems'
require 'sequel'

# どちか切り替える
DB = Sequel.connect('mysql://root:password@127.0.0.1/tusers')
#DB = Sequel.sqlite("tusers.db")

class Users < Sequel::Model ; end

st_time = Time.now
list = []
Users.find_all{|u|
  list << u
}
puts (Time.now - st_time)

8 万件つっこんで、 sqlitemysql で時間を比較してみた

ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
CPU 1.6 GHz Intel Core 2 Duo
Mem 2GB

mysql   : 9  [s]
sqlite3 : 29 [s]

やっぱ MySQL の方が早いんだな。