时间:2021-05-24
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL 语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。
1). 预计的启动开销(在输出扫描开始之前消耗的时间,比如在一个排序节点里做排续的时间)。
2). 预计的总开销。
3). 预计的该规划节点输出的行数。
4). 预计的该规划节点的行平均宽度(单位:字节)。
这里开销(cost)的计算单位是磁盘页面的存取数量,如1.0将表示一次顺序的磁盘页面读取。其中上层节点的开销将包括其所有子节点的开销。这里的输出行数(rows)并不是规划节点处理/扫描的行数,通常会更少一些。一般而言,顶层的行预计数量会更接近于查询实际返回的行数。
从查询结果中可以看出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,那怎么优化呢?
把这个定时执行,然后把sql结果缓存下,然后程序访问缓存结果,页面访问是快了些,但是本质上还没有解决sql执行慢的问题。
优化sql,首先说说 count( distinct FIELD) 为啥这么慢,此处不再赘述了,请看这篇:
优化内容:
select count( distinct FIELD ) from table修改为
select count(1) from (select distinct FIELD from table) as foo;执行过程比对,可以使用 explian anaylze sql语句 查看
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
关于mysql效率优化一般通过以下两种方式定位执行效率较低的sql语句。通过慢查询日志定位那些执行效率较低的SQL语句,用--log-slow-queries[
执行SQL语句本功能为用SQL语句对MYSQL直接操作。一、执行SQL语句:(一)、登录后台,单击“系统”菜单,选择“执行S
查询到效率低的SQL语句后,可以通过EXPLAIN或者DESC命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接
本文实例讲述了Java使用Statement接口执行SQL语句操作的方法。分享给大家供大家参考,具体如下:Statement执行SQL语句:1.对数据库的曾删改
查看代码执行mybatis的sql语句File–>Settings–>Plugins搜索MyBatisLogPluginInstalled安装之后重启,点击上方