Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在Rails中加速查找或初始化?_Mysql_Ruby On Rails_Indexing_Database Performance - Fatal编程技术网

Mysql 如何在Rails中加速查找或初始化?

Mysql 如何在Rails中加速查找或初始化?,mysql,ruby-on-rails,indexing,database-performance,Mysql,Ruby On Rails,Indexing,Database Performance,在我的Rails 3.2.x应用程序中,有一个名为Pdata的表,目前有150多万条记录(mysql),并且每天都在增长。此表正在收集测量结果并不断更新。每一个新的测量要么是一个新的Pdata记录,要么更新一个现有记录。所以我会 pdata = Pdata.find_or_initialize_by_a_id_and_b_id_and_timestamp(a_id,b_id,timestamp) 其中a和b是每个记录所属的基本不同模型,它们由测量数据传递。每天大约有500个测量值需要以这种方式

在我的Rails 3.2.x应用程序中,有一个名为Pdata的表,目前有150多万条记录(mysql),并且每天都在增长。此表正在收集测量结果并不断更新。每一个新的测量要么是一个新的Pdata记录,要么更新一个现有记录。所以我会

pdata = Pdata.find_or_initialize_by_a_id_and_b_id_and_timestamp(a_id,b_id,timestamp)
其中a和b是每个记录所属的基本不同模型,它们由测量数据传递。每天大约有500个测量值需要以这种方式更新或新建。 现在我发现每个
查找或通过
初始化需要大约0.7秒有人知道更快的查找或初始化方法吗?有人知道为什么打这个电话要花这么长时间吗


谢谢,Andreas对于这种情况,请在表上创建一个索引,其中包含您正在处理的列,但请记住顺序很重要,首先使用将最快缩小记录数的列

创建迁移并将索引与字段一起添加:

def change
  add_index :p_datas, [:a_id, :b_id, :timestamp]
end

请记住前面提到的规则,更改列的顺序。

您有DB中所有必要的索引吗?您好,Marek,我不确定我是否理解您的问题。我用“railsgmodel”命令生成了表,这就是我所做的。哇,谢谢,这一更改大大加快了速度!