获取查询的执行计划(EXPLAIN)
Oracle
EXPLAIN PLAN FOR
SELECT * FROM customer WHERE city = 'Ankara';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
-- For the actual executed plan:
-- SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', NULL, 'ALLSTATS LAST'));EXPLAIN PLAN 给出估算计划;如需实际行数,使用 DISPLAY_CURSOR + STATISTICS_LEVEL=ALL。
PostgreSQL
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
SELECT * FROM customer WHERE city = 'Ankara';ANALYZE 会真正执行查询(对 INSERT/UPDATE/DELETE 要小心;在事务内尝试并 ROLLBACK)。
MySQL
EXPLAIN ANALYZE
SELECT * FROM customer WHERE city = 'Ankara';
-- Estimate only (does not execute): EXPLAIN FORMAT=JSON SELECT ...;EXPLAIN ANALYZE(MySQL 8.0.18+)会执行查询;FORMAT=JSON 不执行即可给出详细信息。
SQL Server
SET STATISTICS PROFILE ON;
SELECT * FROM dbo.customer WHERE city = 'Ankara';
SET STATISTICS PROFILE OFF;
-- Estimated plan only (does not execute):
-- SET SHOWPLAN_XML ON;在 SSMS 中,“包括实际的执行计划”(Ctrl+M)显示图形化计划。
MongoDB
db.customer.find({ city: "Ankara" }).explain("executionStats")executionStats 显示实际返回的文档数和索引使用情况(IXSCAN vs COLLSCAN)。
Redis
# Not applicable: Redis has no query planner.
# The complexity of each command is documented (e.g. GET O(1), SORT O(N+M*log(M))).性能取决于命令复杂度以及键/数据结构的大小;使用 SLOWLOG 进行测量。