java中的mysql通用化和日志SQL查询
我在java应用程序中使用JDBI查询MySQL。我想记录在应用程序上执行的查询的相关指标,例如查询花费的时间、执行查询的次数、获取句柄所花费的时间等。。尽管我的大多数查询都是通过一个准备好的语句执行的,但我还是有一些查询将查询中的参数作为SQL字符串的一部分传递。比如说
select * from products where category in ('a', 'b', 'c') and id = :id;
JDBI记录器将其输出为
select * from products where category in ('a', 'b', 'c') and id = ?;
将多个查询分组以进行分析变得非常困难。java中有没有一个库可以帮助我将这些查询归纳为我喜欢的
select * from products where category in (?) and id = ?;
或许
select * from products where category in (?, ?, ?) and id = ?;
另外,我知道在SQL查询中使用字符串是一种非常糟糕的设计
# 1 楼答案
在MySQL中,有两种方法,这两种方法似乎都能满足您的需求:
performance_schema
:https://dev.mysql.com/doc/refman/5.7/en/performance-schema.html我认为这两种方法都可以
in (?, ?, ?) and id = ?
,它们将其作为查询的“摘要”来总结类似的查询,如所用时间等