小编Ewo*_*ann的帖子

索引跨越PostgreSQL中的多个表

在PostgreSQL中是否可以在包含多个表的字段的表达式上放置索引.例如,加速查询以下形式的索引:

SELECT *, (table1.x + table2.x) AS z
FROM table1
INNER JOIN table2
ON table1.id = table2.id
ORDER BY z ASC
Run Code Online (Sandbox Code Playgroud)

sql postgresql

20
推荐指数
1
解决办法
1万
查看次数

选择哪个DB来查找最佳匹配记录?

我将对象存储在由许多整数属性描述的数据库中.真实的对象有点复杂,但现在让我们假设我在我的数据库中存储汽车.每辆车都有很多整数属性来描述汽车(即最大速度,轴距,最大功率等),这些属性可由用户搜索.用户为每个对象定义了一个首选范围,因为有很多属性,所以很可能不会有任何匹配所有属性范围的汽车.因此,查询必须返回按最佳匹配排序的多个汽车.

目前我使用以下查询在MySQL中实现了这一点:

SELECT *, SQRT( POW((a < min_a)*(min_a - a) + (a > max_a)*(a - max_a), 2) +
                POW((b < min_b)*(min_b - b) + (b > max_b)*(b - max_b), 2) +
                ... ) AS match
WHERE a < (min_a - max_allowable_deviation) AND a > (max_a + max_allowable_deviation) AND ...
ORDER BY match ASC
Run Code Online (Sandbox Code Playgroud)

其中a和b是对象的属性,min_a,max_a,min_b和max_b是用户定义的值.基本上,匹配是期望范围与属性的实际值之间的平方差之和的平方根.值0表示完美匹配.

该表包含几百万条记录,并且仅引入WHERE clausule以限制执行计算的记录数.索引放在所有可查询记录上,查询大约需要500ms.我想改进这个数字,我正在研究改进这个查询的方法.

此外,我想知道是否会有更适合执行此工作的不同数据库.此外,由于其更灵活的数据方案选项,我非常希望更改为NoSQL数据库.我一直在研究MongoDB,但找不到有效(快速)解决这个问题的方法.

有没有比MySQL更适合这项工作的数据库?

mysql sql

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

是否可以在不嵌套在文件夹中的情况下为Rails自动加载命名空间?

有没有办法告诉Rails某个文件夹中的所有文件都包含在某个命名空间中?

就是

我有一个文件bar.rbapp/foo。Rails将假定此文件已定义Bar,但我希望此文件定义Foo::Bar

我知道我可以通过将根目录添加到Rails的自动加载路径来实现此目的,但这不是一个真正的解决方案。还有其他方法可以告诉Rails,其中的所有文件都app/foo驻留在Foo名称空间中吗?

编辑:文件树进行澄清

app
  assets
  controllers
  models
  foo
    bar.rb
    quux.rb
Run Code Online (Sandbox Code Playgroud)

我希望能够分别定义Foo::Bar和和中,同时还使用Rails自动加载。无需诉诸如下的树形结构:Foo::Quuxbar.rbquux.rb

app
  assets
  controllers
  models
  foo
    foo
      bar.rb
      quux.rb
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-4

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

标签 统计

sql ×2

mysql ×1

postgresql ×1

ruby ×1

ruby-on-rails ×1

ruby-on-rails-4 ×1