2011-09-15 73 views
0

當您在rails中創建表格時,主鍵默認爲:id?在Rails中創建表格

我想通過:id訪問表中的一行,並且它需要3秒以上才能返回結果。

該表包含大小爲5-20Mb的BLOB,每當我使用ModleName.find(:id)直接引用一行時,該操作需要很長時間。

如果任何人有當您在軌道表如何加快這個過程中,我的「M所有的耳朵

回答

4

的主鍵是id默認,但並不意味着任何index已創建

爲了實現這一目標只是在migration文件中添加這種線:

add_index(table_name, column_names, options) 

See doc here

+0

您回答了我要問的下一個問題:「是否創建了索引?」。我創建了索引,我發現運行查找操作的時間縮短了大約200-300ms。 對於如何管理BLOB有什麼建議嗎? – Eytan

+0

對不起,在這裏沒有特別的建議:我傾向於避免使用blob – apneadiving

+0

主鍵(在MySQL上)是訪問記錄的最快方式,您不必添加任何索引以加速ModelName.find(:id)查詢,它將是無用的。你的問題是因爲你的BLOB數據的大小,並且幾乎每個人都已經告訴過你,你不應該使用數據庫來存儲大的二進制數據,使用文件系統並存儲路徑或其他指針。 –

4

建議,做了主鍵默認爲:?ID

表包含5-20Mb的量級上BLOB和每當我 直接引用使用ModleName.find行(:ID),則操作 TA kes很長一段時間。

如果任何人有關於如何加快這一進程的建議我「米洗耳恭聽

不實際的文件存儲在數據庫中。就像你現在你會遇到性能問題。

0

是的,Rails會主鍵默認爲:ID

首先確保選擇查詢運行到你的MySQL命令行本身想要的速度。

因爲一旦我有一個問題,MySQL查詢本身很慢,就好像MySQL查詢很慢一樣,Rails沒有辦法做到這一點。

無論如何,Chirs指出,除非另有說明,否則絕不要在表中存儲文件。