我使用where
,order by
和limit
进行简单查询(where
部分中没有过滤'#39;)
SELECT t.id FROM table t WHERE ... and t.status in (2, 15) and ... order by t.upped desc LIMIT 36;
正在执行~1.35s,结果有26行。解释:
如果我将limit
值更改为< = 26,则查询正在执行~200ms。解释:
如果我将limit
值更改为> = 40,则同一查询正在执行~200ms。解释:
正如我们所看到的,limit
值的变化很小,对性能影响很大。如果指定limit
从27到39(包括),则查询非常慢,否则 - 相对较快。几天前,这种奇怪的行为意外地开始了。可能是什么原因?
我使用innodb引擎,表中总共有大约248285行。 mysql的版本是5.6.23。我们有ssd。