salesforce isdeleted=false 减慢查询而不是改进它
salesforce isdeleted=false slows down the query rather than improving it
我看到当回收站中的记录过多无法排除查询中删除的记录时,可以使用条件"where isDeleted = false"。但在我的批次中,监控时间,查询比没有显式条件的查询慢得多。至少第一个运行,然后看起来更快。
然而,开发者控制台得到的结果总是令人兴奋。
谁能告诉我原因并帮助我,拜托!
您在哪里阅读的?在我看来非常可疑。 isDeleted = false
应该对所有正常查询(末尾没有 ALL ROWS
的查询)没有影响,因为这是它们开箱即用的功能。如果有的话,它甚至可能会减慢执行速度,因为查询优化器需要考虑这个字段(它没有被索引,索引 99% 的时间具有相同值的东西是没有用的)。
您可以在开发人员控制台中试用查询优化器,请记住,索引统计信息通常会在一夜之间重新计算,因此如果您加载了大量测试数据 - "today" 查询可能仍 运行 与旧版本相去甚远统计数据。
您可能过于复杂了,依赖于一次性结果,因为例如在您开始实验时服务器的负载很低。或者,这可能只是未记录的行为,随着最近的一个版本而改变。只是 select / 创建一个有意义的索引,你会过得更好。
更多阅读material:
- https://developer.salesforce.com/docs/atlas.en-us.salesforce_large_data_volumes_bp.meta/salesforce_large_data_volumes_bp/ldv_deployments_infrastructure_indexes.htm
- https://developer.salesforce.com/docs/atlas.en-us.salesforce_large_data_volumes_bp.meta/salesforce_large_data_volumes_bp/ldv_deployments_techniques_deleting_data.htm
- https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_SOQL_VLSQ.htm
我看到当回收站中的记录过多无法排除查询中删除的记录时,可以使用条件"where isDeleted = false"。但在我的批次中,监控时间,查询比没有显式条件的查询慢得多。至少第一个运行,然后看起来更快。 然而,开发者控制台得到的结果总是令人兴奋。 谁能告诉我原因并帮助我,拜托!
您在哪里阅读的?在我看来非常可疑。 isDeleted = false
应该对所有正常查询(末尾没有 ALL ROWS
的查询)没有影响,因为这是它们开箱即用的功能。如果有的话,它甚至可能会减慢执行速度,因为查询优化器需要考虑这个字段(它没有被索引,索引 99% 的时间具有相同值的东西是没有用的)。
您可以在开发人员控制台中试用查询优化器,请记住,索引统计信息通常会在一夜之间重新计算,因此如果您加载了大量测试数据 - "today" 查询可能仍 运行 与旧版本相去甚远统计数据。
您可能过于复杂了,依赖于一次性结果,因为例如在您开始实验时服务器的负载很低。或者,这可能只是未记录的行为,随着最近的一个版本而改变。只是 select / 创建一个有意义的索引,你会过得更好。
更多阅读material:
- https://developer.salesforce.com/docs/atlas.en-us.salesforce_large_data_volumes_bp.meta/salesforce_large_data_volumes_bp/ldv_deployments_infrastructure_indexes.htm
- https://developer.salesforce.com/docs/atlas.en-us.salesforce_large_data_volumes_bp.meta/salesforce_large_data_volumes_bp/ldv_deployments_techniques_deleting_data.htm
- https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_SOQL_VLSQ.htm