小编jma*_*xyz的帖子

我应该联合索引ActiveRecord多态关联吗?

我有一个我希望非常大的度量表.它具有多态关联,因此它可以属于想要记录某些度量的其他模型.我通常索引像这样的关联列来加速关联加载. 我听说有人谈论联合索引这种关联.这看起来像:

add_index :comments, [:commentable_type, :commentable_id]

但我也听到了反对创建低基数指数的建议,因为索引的收益并没有抵消维持它的开销.由于我的多态关联的_type一半可能在数百万行中只有4-5个值,所以我倾向于只对多态关联的_id部分进行索引.我可能会使用_id列和一些其他未提及的整数和日期时间列创建一些额外的联合索引,但我也不会在这些索引中包含_type.

这是你会做什么/推荐?

migration indexing activerecord ruby-on-rails polymorphic-associations

10
推荐指数
1
解决办法
1623
查看次数

MySQL复合索引中的键的高性能排序(WRT Rails多态关联和STI)

以前,我在ActiveRecord中询问了关于多态外键的复合索引的问题.我的问题的基础是我的理解,索引应该基于列的基数,并且在Rails的STI类型和多态_type列上通常具有相当低的基数.

接受我的问题的答案是正确的 - 将高基数_id列和低基数_type列索引是有价值的,因为它们一起具有高基数 - 我的下一个问题是:你应该如何订购你的化合物索引?

[owner_id,owner_type]的索引首先放置具有较高基数的字段,而[owner_type,owner_id]将具有较高基数的字段放置在第二位.使用前一个键的查询是否比使用后一个键的查询更高效,或者它们是否同样高效?

我问,因为这对我如何为服务STI模型的表订购复合键有特别的影响.STI Rails查找器几乎总是查询类型列 - 这也是一个通常低基数的列.因此,比其他索引更频繁地查询类型列.如果更经常地查询类型列,那么使用类型前导索引可能是有意义的,因为较少特定的查询可以利用索引的第一部分来产生性能提升.但是,对于高度特定的查询而言,我不会因为性能不利而受到影响.利用索引的高基数部分.

mysql indexing activerecord ruby-on-rails sti

7
推荐指数
1
解决办法
1333
查看次数

您如何在Web框架之外发展以创建自己的应用程序框架?

Web框架很棒.我认为滚动你自己而不考虑流行的开源库是一种设计气味.因此,如果有人打算开始一个Web项目而不使用流行的服务器端Web框架(如Rails)和流行的客户端框架(如jQuery),我认为他们要么疯狂,要么无知,要么非常小众.

也就是说,Web框架不会为您做很多事情.像Rails和jQuery这样的恕我直销框架已经取得了成功,因为他们试图将80%带到那里,接下来的20%让你去做.80%的比例使它们足够灵活,可以被广泛使用而不会变得过于紧缩或笨拙.所以问题就变成了,你如何处理剩下的20%,特别是当你的应用程序变大时?

过去1.5年,我们开发并维护了一个Rails/jQuery-UI应用程序.如上所述,这些框架的无限制功能证明了我们能够快速提高速度,保持生产力和加强优秀设计.然而,在过去的几个月里,我开始认为我们应该能够更快地开发和部署新功能,并且我开始觉得我们没有在Rails和jQuery给出的基础上建立足够的基础我们.新功能似乎必须从每次80%的点开发,而不是优选的90-95%.

为什么您的战略超越了Web框架?您曾经使用过哪些技术或技术将80%的起点移近90-95%?您遇到或克服了构建自己的应用程序框架或工具包的哪些具体障碍?在vanilla Rails和jQuery上开发的难点是什么促使您寻求更紧密的应用程序集成?

architecture jquery web-applications ruby-on-rails

7
推荐指数
1
解决办法
926
查看次数

如何在 vue.js 中创建嵌套绑定范围?

Vue 实例可以允许您创建嵌套视图模型。例如,考虑以下情况

new Vue({
  el: '#app',
  data: {
    form: {
      firstName: "Joe",
      lastName: "Bloggs"
    }
  },
  computed: {
    name: function () {
        return this.form.firstName + ' ' + this.form.lastName;
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,有一个嵌套的表单数据对象:form.firstName 和form.lastName。我可以使用以下命令将此视图模型绑定到 HTML:

<div id="app">
  <form>
    <label>
      First:
      <input type="text" v-model="form.firstName">
    </label>
    <label>
      Last:
      <input type="text" v-model="form.lastName">
    </label>
  </form>
  <div>
    You are: {{name}}
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是此 Vue.js 示例的 JS Fiddle

现在,我的问题是:是否有一种简单的方法(例如指令)来创建嵌套绑定范围,使我可以在没有前面的“表单”的情况下寻址firstName和lastName?

Knockout.js 具有with 绑定,允许您显式指定与视图模型相关的绑定范围。这是一个 JS Fiddle,显示 Knockout.js 使用 with 绑定

Vue 中是否有一个类似于 Knockout 的简单绑定绑定 …

vue.js vuejs2 vuejs3 vue-composition-api vue-script-setup

5
推荐指数
1
解决办法
1009
查看次数