📜  用 SQL 解释

📅  最后修改于: 2022-05-13 01:54:19.793000             🧑  作者: Mango

用 SQL 解释

任何SQL查询基本上都与性能无关,但是当涉及到大领域并且使用量非常高时,性能问题总是存在。为了解决这些问题,唯一可能的方法是查询本身必须说明它在做什么以及执行该任务需要多少时间。当任何数据分析师知道它的工作时,他们就可以大量优化该查询。

在 SQL 中, EXPLAIN关键字提供了数据库如何执行 SQL 查询的描述。这些描述包括优化器日志、表的连接方式和顺序等。

因此,这将是查询优化和逐步了解其执行细节的有益工具。 EXPLAIN还负责一个事实,即对特定数据库没有任何访问权限的用户将不会获得有关它如何执行查询的详细信息。因此,它保持安全。

关于 EXPLAIN的主要注意事项是它将在查询的开头使用,即在 SELECT、INSERT、UPDATE 等之前。

句法:



EXPLAIN (QUERY Statement) ; /* ONLY TAKES COMMAND AS PARAMETER */

例子:

让我们首先创建被称为GFG数据库ü唱下面的命令:

CREATE DATABASE GFG;

现在向其中添加表。

SELECT * FROM gfgtable;

我们添加了一些数据,现在它看起来如下:

现在让我们使用EXPLAIN从一个更简单的查询开始获得对任何查询的解释。

QUERY1:   EXPLAIN SELECT * FROM gfgtable;

执行的所有详细信息都在某些指定的列名下给出。

EXPLAIN 关键字输出中的列:

如上所示,使用一些列名在其输出中解释关键字结果。它们解释如下:

  1. id:表示要解释的查询的id。
  2. SELECT_TYPE:这里显示了选择子句的复杂性。在上面的例子中,它非常简单。
  3. table:此处显示使用的表的名称。
  4. 分区:这显示了加入查询的表的分区数。
  5. type:指定Join Type。
  6. possible_keys:可以使用哪些键。
  7. 键:使用哪些键。
  8. key_len:使用的密钥长度。
  9. ref:在比较列时提及查询中使用的任何类型的引用。
  10. 行:查询所作用的行数。
  11. 已过滤:使用 WHERE 子句中的条件过滤的行。
  12. 额外:关于已执行查询的一些额外细节。

这样, EXPLAIN关键字用于获取有关查询的所有信息并将它们制成表格,以便将它们存储在DB 中以供进一步参考。

QUERY 2:
 
 EXPLAIN
 SELECT CONCAT(g.FirstName,g.LastName) AS FULLNAME
 FROM gfgtable AS g, gfgtable AS h
 WHERE g.Roll=h.Roll;

输出:

这里我们可以看到如何 JOIN 的类型也被提到了。 SHOW WARNINGS还与EXPLAIN关键字一起使用,以显示查询中出错的最后执行行的详细信息。