2011-12-23 8 views
1

私はこの質問をフレーズしてGoogleの答えに十分に対応できないようです。railsを使ってmysqlクエリの最大サイズを教えてください。

MySQL 5.1クエリの最大長は何秒ですか?また、関連するRails 3の制限がありますか?

私は5,000以上の電子メールアドレスの配列を持っており、関連するユーザーIDをデータベースから取得する必要があります。私の好みは次のように、すべて1回の旅行であることを行うために、次のようになります。これは5000のために働く場合であっても

emails = get_emails # an array of strings 
User.select(:id).where("email in (#{emails * ','})") 

、私はそれが50,000のためにいつか動作することを確認します。だから、どのくらいの規模のクエリができますか?彼らがそれほど大きくない場合、これらのIDを取得するための次善の方法は何ですか?バッチで同じことをするだけですか?

これについては、現在のバージョンで動作するものより正式にサポートされている制限について詳しく説明します。

+0

最も簡単な方法は、50,000(偽の)エントリを試してみることです。 –

+0

@Pekka、私はそれを行うつもりですが、最後の文を見てください。 – Mori

+0

fair --- –

答えて

3

は、MySQLの設定であなたのmax_allowed_packet設定によるレールのクエリの長​​さに制限はないだろう。それはあなたのMySQLサーバが受け入れるバイト数です。

私はPekkaに同意します。あなたがどれだけ大きなものになるかを見る最良の方法は、偽の値で試してみることです。

User.select(:id).where(:email => emails) 

とRails自動的INクエリを実行します:

また、あなたはこのような、そのクエリを書くことができます。

0

あなたは「シャード」の方法でこれを行うことができます - たとえばストアレコードオブジェクト1で1..10,000と10001のために、あなたはちょうどあなたが持っているメモリの量によって制限されるだろう...

..この意味でObject2に20,000 ...など