mysql - Mysql Query Plan是如何生成的?

标签 mysql sql database indexing innodb

Mysql 在执行具有多个连接的查询之前。它创建多个查询计划并找到执行查询的最低成本计划(大约)。

我的问题是

  1. 优化器将如何执行基于成本的计算以根据什么(例如 where 条件中的字段数)选择计划?

  2. Mysql Stats 如何在更短的时间内创建多个计划?

  3. 有没有自己生成查询计划的公式(或步骤)?

最佳答案

通常,人们使用 EXPLAIN 这样他们就可以看到 SQL 考虑执行查询的不同方式,如果他们看到改进数据库结构以使其更高效的方法,他们可以更改它.在大学里,我们一直在考虑一些逻辑它是如何做的,但它完全取决于实现,所以 MariaDB MySQL、Percona MySQL 和 Oracle DB 将使用不同的方法,虽然大部分逻辑相同但可能存在差异和优化。

建议你查看具体SQL's manual和相应的条目,你实际上让我对此感兴趣,所以我现在也会这样做,如果我发现一些值得注意或有趣的东西,我会发送更新:)

请问为什么要自己生成,也许我们可以给出一些更具体的建议?您可以查询计划,以便尝试生成更优化的计划或出于某种原因生成一些完全独特的计划?

关于mysql - Mysql Query Plan是如何生成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48790264/

相关文章:

mysql - 计数 substring_index

database - yii CActiveRecord with()

MySql 查询以选择具有特定日期的记录

mysql - 使用连接表 Mysql 按同一列排序

php - 如果ID存在于其他表中,则显示为null

sql - Sybase 日期比较 - 格式正确吗?

php : Avoid database queries for each visitors

python - SQLAlchemy : Table primary_key - unexpected keyword argument error

mysql - 从子查询发送列

MySQL:找到最低的免费号码或追加