Hy,我有一个任意的SQL查询。从这个查询开始,我想知道这个查询将访问或更改哪些表。可能会定义一些函数或触发器,这些函数或触发器会另外更改除查询中所述的其他表。
我考虑创建一个不同的mysql服务器,我将查询发送到。但是这些表需要事先创建,但是哪个?
任何想法?
答案 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);