提高以下查询性能的方法有哪些

What are the ways to improve the performance for below query

我有下面的 table 查询,它被执行以获得最新的 REG_LOG(table) 更新,执行完整的 table 扫描以获得结果。

SELECT REG_PATH, 
       REG_USER_ID, 
       REG_LOGGED_TIME, 
       REG_ACTION, 
       REG_ACTION_DATA 
FROM REG_LOG  
WHERE REG_LOGGED_TIME > <last-access-time> 
     AND REG_LOGGED_TIME < '<current-time>' 
     AND REG_TENANT_ID = <tenant-id>

这个table可以包含数百万条数据。 我的问题是我们可以做些什么来提高这个查询的性能?根据解决方法,我们为 REG_LOGGED_TIME 列创建了一个索引,以减少完整的 table 扫描。

WHERE 子句中有 2 个字段。有第一批索引候选人。 你应该分析你的领域的选择性。它是计数不同的值除以行数。如果结果数大于 200,则必须创建索引。

示例:

CREATE INDEX ON REG_LOG (REG_TENANT_ID, REG_LOGGED_TIME);

此外,您还应该针对此 table 查看您的其他查询。也许您应该只创建一个复合索引。在这种情况下,第一个字段必须是具有最大选择性的列。

添加以下索引将显着提高查询速度:

CREATE INDEX ON REG_LOG (REG_TENANT_ID, REG_LOGGED_TIME);