如何针对查询计划分析SQLite查询的执行情况?
查看查询计划实际执行统计数据的方法
针对不同数据库,有对应的工具可以获取查询计划每一步的实际执行行数、耗时等数据:
PostgreSQL
- 使用
EXPLAIN ANALYZE命令,它会实际执行查询,返回包含以下信息的执行计划:- 每一步实际访问/返回的行数(可与预估行数对比)
- 每一步的实际挂钟执行时间
- 较新版本中还会显示CPU时间
- 示例:
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;
MySQL
- 8.0.18及以上版本直接用
EXPLAIN ANALYZE,实际执行查询后返回关联到计划每一步的实际行数、耗时数据; - 旧版本可先执行
SET profiling = 1;开启性能分析,执行目标查询后用SHOW PROFILE FOR QUERY 1;查看详细耗时,但无法直接关联查询计划节点; - 示例:
EXPLAIN ANALYZE SELECT * FROM orders WHERE order_date >= '2023-01-01';
SQLite
- 使用
EXPLAIN QUERY PLAN ANALYZE命令,执行查询后返回包含每个操作节点实际处理行数、总执行时间的统计结果; - 示例:
EXPLAIN QUERY PLAN ANALYZE SELECT * FROM products WHERE price < 100;
注意事项
- 这些命令会实际执行查询,针对INSERT/UPDATE/DELETE等写操作,建议在测试环境使用,或用事务包裹后回滚避免影响生产数据;
- 实际统计数据会受数据库负载、缓存状态影响,多次执行结果可能有差异,建议多次执行取平均值参考。
内容的提问来源于stack exchange,提问作者user2351
相关产品推荐
相关产品推荐

