我正在考虑编写一个工具来维护查询历史记录,它花费的时间超过5秒。在
工具后端设置如下所示:Table1:QUERY_META
queryId int() (PK)
query text
regDate date
Table2: QUERY_STAT
queryId: int() (FK)
runDate: date (date of Run)
avgTimeTaken:int()
noOfRuns: int()
为了使它“聪明”,我希望只维护唯一的查询。我的意思是,假设我有这样的问题:
a)SELECT a,b,c from table1 where x='x1' and y != 'y1';(10秒)
b) SELECT a,b,c from table1 where x='x2' and y != 'y2';(10秒)
现在基本上,我想存储如下查询:
^{pr2}$
这将使我们更容易看到有多少相同类型的查询正在运行。在
对于我的工具来说,这意味着:规范化where子句。
我可以在关键字WHERE处拆分,这就是我的问题变得严重的地方。如何规范化/标准化where子句?
有相当多的比较运算符,我不知道简单的方法来做字符串操作。我现在不担心多个where子句。在
我认为自己能够熟练地使用Python、MySQL(但对任何能完成任务的东西都持开放态度)。在
我的后备计划是依靠select并在QUERY_META表上添加一个queryTag列。它将作为一个按列分组的psuedo!这里也有一些复杂的问题,但是在这里输入这些内容会延长已经很长的帖子。在
由于工具的访问群体和一些系统限制,我不能为此使用慢速查询日志。在
如果有一个工具已经做到了这一点,请指点我,因为我很难确定谷歌要做什么。在