找出mysql查询将要访问哪些表(事先)

时间:2013-12-18 21:29:48

标签: php mysql

Hy,我有一个任意的SQL查询。从这个查询开始,我想知道这个查询将访问或更改哪些表。可能会定义一些函数或触发器,这些函数或触发器会另外更改除查询中所述的其他表。

我考虑创建一个不同的mysql服务器,我将查询发送到。但是这些表需要事先创建,但是哪个?

任何想法?

2 个答案:

答案 0 :(得分:2)

您可以在查询上运行EXPLAIN,它会显示计划以及将要使用的所有表。所以它会是:

EXPLAIN yourqueryhere

答案 1 :(得分:0)

我想这取决于你的拥有方式。如果它是这样的(选择*从X加入Y,等等)你可以解析数据并检索表名。

$string = "select * from table_name join table_name_2 on table_name_2.id = table_name.table_name_2_id join table_name_3 blah blah";
preg_match_all('/(?<=from|join|update )\S+/i', $string, $match);
print_r($match);