ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

sql 性能调优

sql 性能调优
SELECT * FROM warn_data where TO_CHAR(start_time, 'YYYY-MM-DD HH24:MI') >= #{startTime}

这种写法, 对数据库字段使用了 to_char函数, 当表数据巨大的时候,性能慢 怎么优化?

优化使用 TO_CHAR 函数的 SQL 查询性能
当数据库表数据量巨大时,在 WHERE 子句中对字段使用 TO_CHAR 函数会导致性能问题,因为:

1.数据库无法使用该字段上的索引

2.需要对每一行数据都应用函数转换

优化方案
方案1:使用原生日期比较 (​​避免在 WHERE 子句中对列使用函数​​ - 这会阻止索引使用, 将参数转换为日期类型​​而不是将列转换为字符串)

SELECT * FROM warn_data WHERE start_time >= TO_TIMESTAMP(#{startTime}, 'YYYY-MM-DD HH24:MI')
返回列表