gpt4 book ai didi

mysql - ActiveRecord 为与 MySQL 的 has_and_belongs_to_many 关系生成昂贵的 DESCRIBE 查询

转载 作者:可可西里 更新时间:2023-11-01 08:00:27 25 4
gpt4 key购买 nike

我们有一个刚刚开始开发的 Rails3 应用程序。我们在两个模型之间使用 has_and_belongs_to_many 关系。每次我们使用其中一个模型时,ActiveRecord 都会在连接表上执行一个 DESCRIBE 查询,例如:

SQL (1.1ms)  describe `articles_tags`

这些查询相对昂贵(也就是说,比实际的 SELECT 查询慢 10 倍以上)并且执行得非常频繁。它们对我来说似乎不是必需的:由于 has_and_belongs_to_many 关系,该表是自动生成的,因此 ActiveRecord 应该已经知道它的结构(只是一个 article_id 和一个 tag_id 列)。

这种行为有充分的理由吗?如果没有,我该如何阻止它发生?

最佳答案

在开发模式下,服务器会不断重新创建所有类,因此您不必为每次更改都重新启动服务器。在生产中,您的模型将被缓存,并且不需要不断地描述表格。在您的 development.rb 文件中,您会看到这一行:

config.cache_classes = false

是什么导致了这种行为。它应该在 production.rb 中设置为 true

关于mysql - ActiveRecord 为与 MySQL 的 has_and_belongs_to_many 关系生成昂贵的 DESCRIBE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5364539/

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