You need to enable JavaScript to run this app.
文档中心
云数据库 TiDB 版

云数据库 TiDB 版

复制全文
下载 pdf
SQL 调优
SQL 调优概述
复制全文
下载 pdf
SQL 调优概述
本文介绍如何在云数据库 TiDB 版中调优 SQL 性能。您可参照文中方案进行优化,以达到最优的 SQL 执行性能。​
调优 SQL 性能​
要提高 SQL 语句的性能,请考虑以下原则。​
  • 最小化扫描数据的范围。最佳实践始终是只扫描最小范围的数据,避免扫描所有数据。​
  • 使用适当的索引。对于 SQL 语句中 WHERE 子句中的每个列,确保有相应的索引。否则,WHERE 子句将扫描全表并导致性能不佳。​
  • 使用适当的连接类型。根据查询中每个表的大小和相关性,选择正确的连接类型非常重要。通常,TiDB 中的基于成本的优化器会自动选择最优的连接类型。​
  • 使用适当的存储引擎。对于混合事务和分析处理(HTAP)工作负载,建议使用 TiFlash 存储引擎。请参见 HTAP 查询。​
以下为优化慢查询的几种方法:​
使用诊断页面上的 SQL 语句​
在云数据库 TiDB 版的诊断 > SQL 语句标签页,会展示您所有数据库的 SQL 语句的执行统计信息。您可以使用它来识别和分析总执行时间或单次执行时间较长的 SQL 语句。​
说明​
在此页面上,具有相同结构的 SQL 查询(即使查询参数不匹配)会被归类为同一个 SQL 语句。例如,SELECT * FROM employee WHERE id IN (1, 2, 3) 和 select * from EMPLOYEE where ID in (4, 5) 都属于同一个 SQL 语句 select * from employee where id in (...)。​
检查执行计划​
您可以使用 EXPLAIN 检查 TiDB 在编译阶段生成的执行计划。优化器会评估成百上千种可行的执行方案,从中选出资源开销最低、执行效率最高的最优计划。若 TiDB 选择的执行计划不是最优的,您可以使用 EXPLAIN ANALYZE 进行诊断。​
优化执行计划​
TiDB 通过语法解析器解析原始 SQL 语句并完成基础合法性校验后,会先对查询执行一系列逻辑等价改写。更多信息,请参见 SQL 逻辑优化。​
经过上述等价变换,逻辑执行计划会变得更易于优化处理。完成逻辑改写后,TiDB 将生成与原始语句语义完全一致的逻辑计划,再结合数据分布情况与各算子的执行成本,生成最终物理执行计划。更多信息,请参见 SQL 物理优化。​
此外,TiDB 支持开启执行计划缓存功能,减少 PREPARE 语句重复构建执行计划的资源消耗,详情请参见预处理执行计划缓存。​
优化全表扫描​
慢 SQL 查询最常见的原因是 SELECT 语句执行全表扫描或使用了错误的索引。您可以使用 EXPLAIN 或 EXPLAIN ANALYZE 检查的执行计划并找出执行慢的原因。有以下三种方法可以进行优化,详情请参见 SQL 性能调优。​
  • 使用二级索引​
  • 使用覆盖索引​
  • 使用主键索引​
最佳实践​
以下提供最佳实践帮助您更好的进行 SQL 调优。​
DML 最佳实践​
请参见 DML 最佳实践。​
选择主键时的 DDL 最佳实践​
索引最佳实践​
索引最佳实践包括创建索引和使用索引的最佳实践。​
创建索引的速度默认是保守的,在某些场景下可以通过修改变量来加快索引创建过程。​
重要提醒​
该文档部分内容附带平凯云平台链接,以下简称为外链。若遇到以下分类对应的外链时,请参考以下说明。现将外链文档划分为不同类型,并明确各类文档可作为参考依据的范围:​
​
分类​
说明​
操作类​
外链中所涉及的创建集群、连接集群等操作,请参考云数据库 TiDB 版的相应内容:​
  • ……​
参考类​
  • 外链涉及平凯云 SQL 参考目录下的文档可作为参考。​
  • 外链涉及平凯云 SQL 调优目录下的文档部分可作为参考。​
Dashboard​
云数据库 TiDB 版暂未提供 Dashboard。参考链接中涉及 Dashboard 相关的内容,暂不能作为有效参考。​
​
​
最近更新时间:2026.07.02 18:54:10
这个页面对您有帮助吗?
有用
有用
无用
无用