【问题标题】:Rails 4 planning your app for efficient queries [closed]Rails 4规划您的应用程序以进行高效查询[关闭]
【发布时间】:2014-10-19 17:27:58
【问题描述】:

我对从头开始创建 Rails 应用程序还很陌生,我想知道设置它们以实现高效查询的最佳方法。

考虑这种情况。您正在构建一个使用 mysql2 作为数据库共享书籍的社交网站。你从两个模型开始; 用户作者。两者都需要name 属性; first_namemiddle_namelast_name

创建一个 name 模型,其中名称将是它自己的单个表,这样会不会更有效?

或者将名称属性添加到单独的用户作者,其中属性保留为列?

【问题讨论】:

    标签: mysql ruby-on-rails database performance


    【解决方案1】:

    首先,您可以考虑使用 PostgreSQL 来实现这一点 - 有很多,但性能是原因之一。

    此外,您必须认为您构建的系统应该是可维护的。为名称使用单独的表可能是一个非常糟糕的主意。您是否打算在该名称表中为您拥有的所有模型添加名称?听起来怪怪的。您认为这样做可以解决什么问题?

    相反,我认为索引可以帮助您 (https://tomafro.net/2009/08/using-indexes-in-rails-index-your-associations) 检索关联。

    我不能就你的数据模型给你更多的建议。这取决于需求和未来的意图。您要查询每个模型然后检索关联吗?是否会有某种标记方法来处理同义词?

    【讨论】:

    • 感谢您的好评!使用 PostgreSQL 有什么好处?我还没有使用它,所以我对它很陌生。我主要担心的是,我的直觉认为不同表具有相同的属性是错误的。我不知道它以后是否会以某种方式破坏 DRY 原则并减慢查询速度。再一次,这完全是直觉,因为我不知道查询稍后将如何执行。我会尝试使用一些索引。现在是熟悉它们的最佳时机!
    • 上面的场景是一个简单的例子。我正在进行的项目将是一项民意调查,用户可以“同意”或“不同意”某些作者的引用。所以我将检索许多不同的查询,但仍然必须弄清楚我将如何去做。再次感谢您!
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 2011-02-22
    • 2010-12-08
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2023-03-11
    相关资源
    最近更新 更多