验证MySql查询

8 mysql

如何在执行之前验证MySql查询?

roo*_*kie 7

没有好办法!基本上,您需要执行该语句; 没有-l标志.

两种常用方法是:

  1. 使用EXPLAIN前面的SELECT.这仅适用于SELECT语句,因此它不是一般解决方案
  2. 使用交易.这只适用于5.x Innodb表,因此它不是一般解决方案.对于您不想花时间执行的SELECTS,这也没有用.

这些都不适合我.我发现唯一合适的通用解决方案是创建一个测试套件,以真实的方式创建临时表,然后对它们执行查询:

CREATE TEMPORARY TABLE users_test LIKE users;
CREATE TEMPORARY TABLE auth_test LIKE auth;
Run Code Online (Sandbox Code Playgroud)

您实际上可以忘记制作这些临时工并将它们保存在'_test'数据库中,并在适当时更改您的DSN.

否则,您需要对查询进行参数化,以便在必要时告诉它使用"_test"表.

这远非理想,但它是我发现的最佳解决方案,因为它快速执行查询(没有数据加入/决定)并且不影响数据库.

如果有人证明我错了并指向一个接受字符串并返回TRUE或错误消息的MySQL Parser,我会很高兴.


Qua*_*noi 1

跑步EXPLAIN SELECT \xe2\x80\xa6

\n\n

它将解析您的查询并向您显示执行计划(它将使用哪些算法来执行您的查询,以及按什么顺序)。

\n\n

这本身就是一件好事,即总是这样做,而不仅仅是为了验证。

\n\n

这将帮助您了解幕后发生的事情并构建更有效的查询。

\n