我有大量的查询,并希望计算它们的出现次数。
问题:相同的查询可以具有不同的参数。
我想过使用EXPLAIN
,然后对数组进行散列。但我想那不会很好用。
有没有办法在不包含参数和“style”(format?) 的情况下获得查询的哈希值?
- 例如,mysql(mariadb)服务器可以从查询返回预处理语句吗?*
- (编辑:我没有代码中的预准备语句。我只得到了SQL字符串。)*
简单的例子:SELECT * FROM foo where bar = 'baz
个SELECT * FROM
fooWHERE
bar= 'baz';
SELECT * FROM
fooWHERE
bar= 3
SELECT * FROM
fooWHERE
bar= 3;
...
这是具有不同“样式”和不同参数的同一查询。
我想统计的是SELECT * FROM
fooWHERE
bar= {.*};
的出现次数
- 注意:查询将包含多个联接、子查询等。*
在这个例子中,我从一个general_log
表中得到了这些SQL查询。没有代码,只有SQL字符串。这 * 不是 *“我如何才能做得更好”的问题。这是一个“我如何才能从我得到的结果中得到更好的结果”的问题。
1条答案
按热度按时间ff29svar1#
您可以通过performance_schema中的“digest”(一种查询的匿名版本,其中所有常量值都替换为
?
)来获取查询的计数。请参阅https://www.percona.com/blog/2015/10/13/mysql-query-digest-with-performance-schema/以获取有关此解决方案的博客。