![]() |
1
5
我只能证实尼尔斯说的话。RDBMS不适合多维搜索。我使用过一些智能解决方案、缓存计数器、使用触发器等。但最终,外部专用索引器总是获胜。 也许,如果您将数据转换为维度模型,并将其提供给某个OLAP(我的意思是MDX引擎),它将运行良好。但它似乎有点太重了,而且绝对不是实时的。 相反,使用专用索引引擎的解决方案(想想Lucene,想想 Sphinx )可以通过增量索引更新近乎实时地进行。 |
![]() |
2
5
在我看来,关系数据库并不擅长搜索。您可以通过专用的搜索引擎(如solr/lucene)获得更好的性能。 |
![]() |
3
2
面搜索是一个分析问题,这意味着空间设计是一个很好的选择。又名,你搜索的对象必须是表格形式。 在分析表中包括所有感兴趣的列。 将连续值放入桶中。 对“许多”项(如类别或标记)使用布尔列,例如,如果有三个标记“foo”、“bar”和“baz”,则会有三个布尔列。 使用物化视图创建分析表。 从中找出垃圾索引。某些数据库支持此类型应用程序的索引。 只过滤一次。 结合你的成果。 为常见查询构建预先聚合的物化视图。 本文也可以帮助您: https://blog.jooq.org/2017/04/20/how-to-calculate-multiple-aggregate-functions-in-a-single-query/
100000条记录,5个方面,大约150毫秒 |
![]() |
4
0
关于计数,为什么要通过SQL来提取它们?无论如何,您必须在代码中迭代结果集,那么为什么不在那里计算呢? 我目前正在开发一个面向面的搜索应用程序,它运行良好。唯一棘手的部分是设置代码,使其在到达新方面之前不输出方面。此时,输出方面和为它找到的行数。 这种方法假定您要拉回一个所有匹配项的列表,从而拉回具有相同方面的多行。当您按方面排序这个结果时,很容易在代码中得到计数。 |
![]() |
blogger13 · 视频租赁店数据库的规范化 5 月前 |
![]() |
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 6 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 6 月前 |
|
Grenish Rai · Firestore错误“用户文档不存在” 10 月前 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 10 月前 |
![]() |
Dante · Django::配置不当:池不支持持久连接 10 月前 |
![]() |
YouLocalRUser · 删除重复行,保留第一行 11 月前 |