查询在某个功能上,查询速度达到2分钟,并且是一个表查询,表数据的数量为600W
SQL在数据库可视化工具中执行,发现执行速度是正常的,并且采用索引。但是,应用程序中的查询达到了2分钟。
在应用程序中,不应有索引,因为字段是时间字段,因此它很可能在数据库中具有函数转换。
操作1恢复了测试环境,表格的数据量为50W,这反映了加法和无吸引力之间的差异。
操作2与DBA DBA联系,说时间类型的存在时间类型在数据库中添加了函数转换
测试环境数据库中的操作3增加表并将其设置为600W数据
将数据添加到表
在Java中添加物理课
执行查询
在数据库可视化工具中查询小于测试环境页面上的2s以执行查询查询时间接近6s
解释页面查询不采用索引
分析:JPA的底层是ORM框架,时间属性的映射是否存在问题?
执行页面上的查询,查询时间小于2s,并且数据库可视化工具的查询时间
进一步测试,删除索引
页面查询时间接近6s,并且页面查询已充分证明。
综上所述
即使Java中的属性是日期类型,也有必要标记属性@Temporal(lemutantype.date),否则它不会对数据库中的字段最反射。数据库不可见的函数转换将在查询期间发生,从而导致索引故障。