google-cloud-platform - Cloud Spanner - WHERE 子句中包含大量项目的读取性能
问题描述
我正在为一个项目评估一些不同的数据存储,我有一个奇怪但不灵活的要求来检查每个查询是否存在 1500 个键......基本上我将运行的唯一查询是以下形式:
SELECT user_id, name, gender
WHERE user_id in (user1, user2, ..., user1500)
表中将有大约 35 亿行。一个引起我注意的数据存储是 Spanner。WHERE
我想知道以这种方式查询数据是否可行,或者由于我的子句中有大量项目,我是否会遇到性能问题。到目前为止,我只能在少量数据上测试这些查询,所以我更倾向于理论性能影响可能是什么样子,而不是奢侈地“尝试并发现”。
此外,还有其他数据存储可能更适合这种读取模式吗?我预计每秒运行不超过 80 个查询。此外,数据将每周批量加载。数据本质上是结构化的,但我们不以关系方式使用它(即没有连接)。
无论如何,对不起,如果这个问题有任何含糊之处。如果需要,我很乐意提供更多细节。
解决方案
如果您使用绑定数组参数来指定键,那么 1500 个键应该不是问题:
SELECT user_id, name, gender
FROM table
WHERE user_id in UNNEST(@users)
推荐阅读
- javascript - 离子 JavaScript 函数在第一次加载时有效,但在第二次加载时无效
- matlab - 使用 Matlab ode45 对弹丸运动进行建模
- point-cloud-library - PCL 特征匹配失败
- rounding - python中不确定性的科学四舍五入?
- vue.js - 箭头函数不绑定数据与 axios 响应
- ruby-on-rails - Rails 使用数据库查询按月分组记录
- node.js - 当我尝试使用 JS 从外部类扩展类时,为什么会出现引用错误
- custom-model-binder - 如何在 ModelBinders 中使用 DefaultModelBindingMessageProvider
- vb.net - 使用联接时查询活页夹显示单元格只读
- r - 减少地块之间的空间 ggplot2