提高以下查询性能的方法有哪些
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);
我有下面的 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);