加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

获取PostgreSQL查询的执行时间

发布时间:2020-12-13 16:26:33 所属栏目:百科 来源:网络整理
导读:DECLARE @StartTime datetime,@EndTime datetimeSELECT @StartTime=GETDATE()select distinct born_on.namefrom born_on,died_onwhere (FLOOR(('2012-01-30'-born_on.DOB)/365.25) = ( select max(FLOOR((died_on.DOD - born_on.DOB)/365.25)) from died_on,
DECLARE @StartTime datetime,@EndTime datetime

SELECT @StartTime=GETDATE()

select distinct born_on.name
from   born_on,died_on
where (FLOOR(('2012-01-30'-born_on.DOB)/365.25) <= (
    select max(FLOOR((died_on.DOD - born_on.DOB)/365.25))
    from   died_on,born_on
    where (died_on.name=born_on.name))
    )
and   (born_on.name <> All(select name from died_on))

SELECT @EndTime=GETDATE()

SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in millisecs]

我无法获取查询时间.相反,我得到以下错误:

sql:/home/an/Desktop/dbms/query.sql:9: ERROR:  syntax error at or near "@"
LINE 1: DECLARE @StartTime datetime,@EndTime datetime
为了测试目的,您也可以使用 EXPLAIN ANALYZE.

您可以像这样使用它来检查我的修改版本的查询是否实际上更快:

EXPLAIN ANALYZE
SELECT DISTINCT born_on.name
FROM   born_on b
WHERE  floor(('2012-01-30'::date - b.dob) / 365.25) <= (
    SELECT floor((max(d1.dod - b1.dob)/365.25))
    FROM   born_on b1
    JOIN   died_on d1 USING (name)
    )
AND NOT EXISTS (
    SELECT *
    FROM   died_on d2
    WHERE  d2.name = b.name
    );

显示查询计划以外的总运行时间.执行几次以排除工件.
A couple of options有更多的细节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读