我正在使用lua脚本 https://github.com/clofresh/mysql-proxy-cache缓存选择查询。 但它检测select语句的方式存在问题。 它使用以下代码
return query:sub(1,6):lower() == 'select'
如果选择查询嵌套在()
中,则无效。例如:
(SELECT * from tbl_name);
有没有办法在mysql代理中删除extra()?
或者有更好的方法来检测选择查询吗?
答案 0 :(得分:0)
我会尝试使用检测常见模式的String Library来编写规范化脚本,并用等效的规范化sql替换它们。
一个例子是你的产品,但也可以查询部件移动到哪里可以从中受益。
答案 1 :(得分:0)
查询实际上在括号内,而不是在字符串内?即使使用插件,这也不应该正确解析。如果它在字符串中,那么只需使用:sub(2, 7)
,但如果不是,则将其放在字符串中。创建一个基本上重现该函数的函数,除了将它放在一个字符串中,例如:
function mysqlQuery(mysqlString)
loadstring(mysqlString)();
return mysqlString;
end
mysqlQuery("SELECT * from tbl");