PostgreSQL
查询筛选条件一改,性能提升百倍!
有时,我们需要评估和改进查询中的
WHERE
子句部分,对
筛选条件的细微更改都可能会对查询性能产生巨大影响。
1
、避免在筛选条件中使用函数
在筛选阶段将函数应用于列会降低性能。数据库需要在筛选
之前将函数应用于数据集。让我们来看一个对
timestamp
字
段进行筛选的简单示例:
SELECT count(*)
FROM orders
WHERE CAST(order_timestamp AS DATE) >= '2024-02-
01';
上述对
100000000
行数据集的查询,运行了
01 min 53
sec
,因为它需要在应用筛选条件之前,将
order_timestamp
列的数据类型从
timestamp
更改为
date
。但是,那不是必需
的!请注意,对于上面的查询,根据表的元数据,可以将其重
写为:
SELECT count(*)
FROM orders
WHERE order_timestamp >= '2024-02-01 00:00:00';
重写的查询使用了原始的时间戳字段,而不进行强制转换
在完成如此微小的更改之后,现在查询可以在
20 sec
内运行完,
速度比原始查询快了近
6
倍。
相关文档
评论