我有一个包含多个视图的架构。我需要检查执行计划以确保适当的索引到位并被使用。
我该怎么做呢?
我宁愿不必将输出复制并粘贴show create view <viewname>
到explain
中,尤其是因为某些视图是建立在其他视图之上的,这会很痛苦。
我有一个包含多个视图的架构。我需要检查执行计划以确保适当的索引到位并被使用。
我该怎么做呢?
我宁愿不必将输出复制并粘贴show create view <viewname>
到explain
中,尤其是因为某些视图是建立在其他视图之上的,这会很痛苦。
使用information_schema.views表
这将为所有视图生成 EXPLAIN
这将为 mydb 数据库中的所有视图生成 EXPLAIN
试试看 !!!
更新 2012-03-22 11:30 EDT
@MattFenwick,您的答案比我的要简单得多。这是我在运行 MySQL 5.5.12 的 PC 上尝试的示例。我在您的回答中的 SELECT 版本和从我的回答中生成的 EXPLAIN 上运行了 EXPLAIN:
他们都制定了相同的 EXPLAIN 计划。我会改变我的答案来实施你的方式。尽管为简单起见,它是 +2,但您会从我这里得到 +1。你应该继续接受你自己的答案。
这是一个关于 MySQL 中视图的有趣事实:一个视图在 information_schema 数据库中的两个位置表示
这将为所有视图生成 EXPLAIN
或者
这将为 mydb 数据库中的所有视图生成 EXPLAIN
或者
这是我第一次尝试的:
显然这是行不通的——它和做
describe view_name
.但是,
select * from view_name
似乎有效: