TGTGInsighttelegram intelligenceLIVE / telegram public index
Post content
帖子内容
遇到了一个神奇妙妙 bug,我使用某系统时总是有概率登录失败,需要重试才能成功。而且最近几个月以来失败概率越来越高,到了难以忍受的程度,常常需要重试两三次才能成功。但别人都没遇到同样的问题。 今天在 @taoky42 认真调查之后终于搞明白了,问题在于登录时在数据库中查询我的本月用量花费的时间超过一秒。数据库表结构为 使用记录(时间, 用户, 用量),时间列和用户列分别有单列索引,查询语句为 select sum(用量) from 使用记录 where 用户 = ... and UNIX_TIMESTAMP(时间) > ...。 我看到这个查询的第一反应是,这肯定用时间索引,然后行数很少,应该不会慢,就算慢也不可能只有我一个人慢,应该是大家一样慢。但是,注意以下两种写法的区别: 1. UNIX_TIMESTAMP(时间) > ... 2. 时间 > FROM_UNIXTIME(...) 1 运行花费 1.37 秒,2 运行花费 0.05 秒。1 用不上时间索引,只能用用户索引,导致行数多了不少,并且每行还有函数调用开销。