2011-09-15 5 views
0

railsでテーブルを作成すると、主キーのデフォルトは:idですか?Railsでテーブルを作成する

私はテーブルの行に:idをアクセスしようとしていますが、結果を返すのに3秒以上かかります。

表には5〜20MbのBLOBが含まれており、ModleName.find(:id)を使用して行を直接参照すると、操作に時間がかかります。

あなたがレールにテーブルを作成するとき、誰もが、このプロセスをスピードアップする方法についての提案I "メートルすべての耳

答えて

4

主キーは、デフォルトではidですが、それはどのindexが作成されているという意味ではありません

を単にmigrationファイル内の行のこの種を追加することを達成するために:。

add_index(table_name, column_names, options) 

See doc here

+0

私は次の質問に答えました。「インデックスは作成されていますか?」インデックスを作成したところ、検索操作を実行するのに約200〜300ミリ秒かかることがわかりました。 BLOBの管理方法に関するご提案はありますか? – Eytan

+0

ここで特別なアドバイスはありません:ブロブの使用を避ける傾向があります – apneadiving

+0

プライマリキー(MySQLの場合)がレコードにアクセスする最も速い方法です.ModelName.find(:id)を高速化するためのインデックスを追加する必要はありません。クエリ、それは役に立たないでしょう。あなたの問題はBLOBデータのサイズのためです。ほとんどの人があなたに言ったように、大きなバイナリデータを格納するためにデータベースを使用したり、ファイルシステムを使用したり、パスやその他のポインタをテーブルに格納したりしないでください。 –

4

を持っている場合は、主キーのデフォルトん:?IDを

はい

テーブルは5-20MbのオーダーでBLOBを含み、いつでも私は直接ModleName.find使用して行を参照 (:ID)、操作 TAを長い時間。誰もがこのプロセスをスピードアップする方法についての提案を持っている場合

私は「すべての耳がm

データベースに実際のファイルを格納しないでください。あなたが今しているようにあなたがパフォーマンスの問題に実行されます。

0

はい、レールに主キーのデフォルトを行います。id

まず選択クエリを使用すると、MySQLのコマンドライン自体に望んでいた速度まで走ることを確認してください。

MySQLクエリ自体が遅いという問題が発生すると、MySQLクエリが遅いかのように、Railsは何もできません。

とにかく、Chirsが指摘しているように、そうでなければテーブルにファイルを保存しないでください。

関連する問題