• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Postgresql 查看SQL语句执行效率的操作

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL 语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。

    Explain语法:

    explain select … from … [where ...]

    例如:

    explain select * from dual;

    这里有一个简单的例子,如下:

    EXPLAIN SELECT * FROM tenk1;
                   QUERY PLAN
    ----------------------------------------------------------------
       Seq Scan on tenk1 (cost=0.00..458.00 rows=10000 width=244)

    EXPLAIN引用的数据是:

    1). 预计的启动开销(在输出扫描开始之前消耗的时间,比如在一个排序节点里做排续的时间)。

    2). 预计的总开销。

    3). 预计的该规划节点输出的行数。

    4). 预计的该规划节点的行平均宽度(单位:字节)。

    这里开销(cost)的计算单位是磁盘页面的存取数量,如1.0将表示一次顺序的磁盘页面读取。其中上层节点的开销将包括其所有子节点的开销。这里的输出行数(rows)并不是规划节点处理/扫描的行数,通常会更少一些。一般而言,顶层的行预计数量会更接近于查询实际返回的行数。

    现在我们执行下面基于系统表的查询:

    SELECT relpages, reltuples FROM pg_class WHERE relname = 'tenk1';

    从查询结果中可以看出tenk1表占有358个磁盘页面和10000条记录,然而为了计算cost的值,我们仍然需要知道另外一个系统参数值。

    postgres=# show cpu_tuple_cost;
       cpu_tuple_cost
      ----------------
       0.01
      (1 row)
    cost = 458(磁盘页面数) + 10000(行数) * 0.01(cpu_tuple_cost系统参数值

    补充:postgresql SQL COUNT(DISTNCT FIELD) 优化

    背景

    统计某时段关键词的所有总数,也包含null (statistics 有400w+的数据,表大小为 600M),故

    写出sql:

    select count(distinct keyword) +1 as count from statistics;

    问题

    虽然是后台查询,但是太慢了,执行时间为为 38.6s,那怎么优化呢?

    解决

    方法1(治标)

    把这个定时执行,然后把sql结果缓存下,然后程序访问缓存结果,页面访问是快了些,但是本质上还没有解决sql执行慢的问题。

    方法2(治本)

    优化sql,首先说说 count( distinct FIELD) 为啥这么慢,此处不再赘述了,请看这篇:https://www.jb51.net/article/65680.htm

    优化内容:

    select count( distinct FIELD ) from table

    修改为

    select count(1) from (select distinct FIELD from table) as foo;

    比较

    执行过程比对,可以使用 explian anaylze sql语句 查看

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • PostgreSQL对GROUP BY子句使用常量的特殊限制详解
    • PostgreSQL中的VACUUM命令用法说明
    • PostgreSQL 如何查找需要收集的vacuum 表信息
    • PostgreSQL备份工具 pgBackRest使用详解
    • postgresql数据合并,多条数据合并成1条的操作
    • postgresql数据添加两个字段联合唯一的操作
    • postgreSQL使用pgAdmin备份服务器数据的方法
    上一篇:PostgreSQL对GROUP BY子句使用常量的特殊限制详解
    下一篇:postgresql 删除重复数据的几种方法小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Postgresql 查看SQL语句执行效率的操作 Postgresql,查看,SQL,语句,执行,