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)
我正在为一个项目评估一些不同的数据存储,我有一个奇怪但不灵活的要求来检查每个查询是否存在 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)