Mysql 如何在派生表上创建索引

Mysql 如何在派生表上创建索引,mysql,Mysql,我有一个类似于下面的查询,在子查询中有更多的条件和连接 EXPLAIN SELECT * FROM (SELECT * FROM test WHERE id = 1) as drv 子查询本身需要1秒,因为上面的派生表需要2.5秒。 如何在派生表上定义索引。除了创建临时表之外,还有任何定义索引的方法。我的查询非常复杂,在上面的查询之上有更多的连接和条件,这就是我不想使用临时表的原因。我觉得除了临时表之外,必须有某种方法来定义索引 查询优化器将创建基表的基础索引。因此,您需要为完全扩展的查

我有一个类似于下面的查询,在子查询中有更多的条件和连接

   EXPLAIN SELECT * FROM (SELECT * FROM test WHERE id = 1) as drv
子查询本身需要1秒,因为上面的派生表需要2.5秒。
如何在派生表上定义索引。除了创建临时表之外,还有任何定义索引的方法。我的查询非常复杂,在上面的查询之上有更多的连接和条件,这就是我不想使用临时表的原因。我觉得除了临时表之外,必须有某种方法来定义索引

查询优化器将创建基表的基础索引。因此,您需要为完全扩展的查询确保基表上有良好的索引

这就是嵌套视图不能提高性能的原因。派生表也可以被视为内联视图


另一种选择是使用临时表,但您已经忽略了这一点。

如果子查询中存在联接,优化器如何在多个表上选择索引,或者在这种情况下如何定义索引动态创建/删除临时表需要相当长的时间。这就是为什么我打折临时表。。。。