Cloud Spanner - WHERE 子句中包含大量项目的读取性能

Cloud Spanner - read performance with large number of items in WHERE clause

我正在为一个项目评估一些不同的数据存储,我有一个奇怪但不灵活的要求来检查每个查询是否存在 1500 个键...基本上我唯一的查询是 运行ning 的格式为:

SELECT user_id, name, gender
WHERE user_id in (user1, user2, ..., user1500)

我将在 table 中拥有大约 35 亿行。引起我注意的一种数据存储是 Spanner。我想知道以这种方式查询数据是否可行,或者我是否会 运行 由于 WHERE 子句中的大量项目而导致性能问题。到目前为止,我只能在少量数据上测试这些查询,所以我更多地依赖于理论上的性能影响,而不是仅仅 "try and found out".

此外,还有其他数据存储可能更适合这种读取模式吗?我预计 运行 每秒不超过 80 个查询。此外,数据将每周批量加载。数据是自然结构化的,但我们不以关系方式使用它(即没有连接)。

无论如何,如果这个问题在任何方面都含糊不清,我们深表歉意。如果需要,我很乐意提供更多详细信息。

如果使用绑定数组参数指定键,1500 个键应该不是问题:

SELECT user_id, name, gender
FROM table
WHERE user_id in UNNEST(@users)

https://cloud.google.com/spanner/docs/sql-best-practices#write_efficient_queries_for_range_key_lookup