atjiu / pybbs

更实用的Java开发的社区(论坛),Better use of Java development community (forum)
GNU Affero General Public License v3.0
1.87k stars 711 forks source link

MySQL时间函数需要全表扫描,效率较低 #117

Closed wtune closed 4 years ago

wtune commented 4 years ago

Comment, Tag, TopicUser表中,都有一个叫做countToday的SQL查询,使用了MySQL的to_days函数。这个函数并不能很好的利用 #116 中添加的in_time上的索引,即使加上索引之后也会全表扫描并逐一执行函数。将SQL查询改写后就可以很好的利用上索引,优化查询性能。下面是对于Comment表的例子:

优化前:

https://github.com/tomoya92/pybbs/blob/1ed659acd49ec5f6661e24cc56429f1e2087ae81/src/main/java/co/yiiu/pybbs/mapper/CommentMapper.xml#L48-L52

优化后: https://github.com/tomoya92/pybbs/blob/abb6d62601210e4bb8c8e1325f90ebdc64016c28/src/main/java/co/yiiu/pybbs/mapper/CommentMapper.xml#L48-L52

atjiu commented 4 years ago

已合并,感谢