gpt4 book ai didi

mysql - 如何加快 Rails 中的 find_or_initialize 速度?

转载 作者:行者123 更新时间:2023-11-29 10:07:11 24 4
gpt4 key购买 nike

在我的 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 个测量值需要通过这种方式更新或新创建。现在我发现每个find_or_initialize_by调用大约需要0.7秒!有人知道更快的查找或初始化方法吗?有谁知道为什么这个电话需要这么长时间?

谢谢,安德烈亚斯

最佳答案

对于这种情况,请使用您正在使用的列在表上创建索引,但请记住顺序很重要,首先使用能够最快缩小记录数量的列。

创建迁移并添加包含字段的索引:

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

更改列的顺序,同时牢记前面提到的规则。

关于mysql - 如何加快 Rails 中的 find_or_initialize 速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com