跳到主要内容

32 篇博文 含有标签「pawsql」

查看所有标签

SQL优化实践 - MySQL的执行计划可视化

· 阅读需 5 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

概述

执行计划(Execution Plan)是数据库在执行SQL查询时内部生成的执行策略,它描述了SQL在数据库内部是如何一步一步执行的,是进行诊断SQL性能问题和进行调优的重要依据。随着数据库应用处理复杂度的提高,SQL执行计划也随着SQL也变得越来越复杂。依赖纯文本的执行计划分析阅读难度大,难以把握整体执行计划、定位关键路径及瓶颈,给DBA的性能优化工作带来很大挑战。

执行计划可视化工具直观地将执行计划以流程图形式呈现,清晰展示计划结构,使用视觉元素突出显示关键操作和路径,同时关联SQL语句源码,整合多方面信息进行综合分析。这样可以极大地提高DBA读懂和分析执行计划的效率,快速定位性能瓶颈,针对SQL或索引进行精准优化。

SQL知识分享 - 数据库索引的类型

· 阅读需 14 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

Copyright © 2023 PawSQL

数据库索引是一种用于加快数据库查询速度的数据结构,它类似于书籍的目录,可以帮助快速定位到表中某个或某些特定的行。数据库索引通常由一组索引键(或索引字段)构成,这些键的值被存储在一个数据结构中,以便快速查找特定的行。

索引的类型(实现方式)

SQL实战经验 - 避免使用CROSS JOIN

· 阅读需 3 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

Copyright © 2023 PawSQL

问题定义

CROSS JOIN会将第一张表的每一行与第二张表的每一行进行笛卡尔乘积。它会生成表1行数x表2行数的记录。理论上它等价与条件为1=1的内连接。CROSS JOIN可以快速将多表拼接,但是其会产生大量记录,造成效率低下;而且不指定连接条件,结果可能没有实际意义。

PawSQL对使用STRAIGHT_JOIN的语句进行了风险提示,以避免其引发的性能问题。

SQL优化技巧 - 排序方向不同导致索引失效

· 阅读需 3 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

Copyright © 2023 PawSQL

问题定义

ORDER BY 子句中的所有表达式必须按统一的 ASC 或 DESC 方向排序,以便利用索引;如果ORDER BY 语句对多个不同条件使用不同方向的排序无法使用索引。

譬如在TPCH的lineitem的表上创建索引:

create index l_partkey_suppkey_idx on lineitem(l_partkey, l_suppkey);

SQL实战经验 - 避免使用Natural Join

· 阅读需 3 分钟
PawSQL Team
Optimize your SQL Queries by Clicks!

Copyright © 2023 PawSQL

定义

natural join是一种特殊的等值连接,它可以和内连接、外连接及全连接配合使用,它会自动搜索两张表中所有相同列名和类型的列,并且以这些列为条件进行等值连接。natural join可以简化语句,但隐式连接条件降低代码的可读性,不利于理解表之间的关系,而且容易出现误连接。PawSQL对使用STRAIGHT_JOIN的语句进行了风险提示,以避免其引发的正确性问题。 以tpch库中的lineitem和orders表为例

SELECT *
FROM lineitem
NATURAL JOIN orders;