暂无图片
MySQL 以下SQL如何优化?
我来答
分享
暂无图片 匿名用户
MySQL 以下SQL如何优化?
暂无图片 10M
with g_z as
(
    select cast(og3.id as text) cd, og2.gongzhong clss2 from public.ods_gongzhong og3
    left outer join public.ods_gongzhong og2 on og3.pid = og2.id
    where og2.gongzhong is not null
)
, b_gz as 
(
    select distinct user_id as dis_user_id
    ,count( user_id ) as user_id_cnt
    , view_count
    ,o_ctiy."name" as ctiy_cnt
    ,UNNEST(regexp_split_to_array( profession , '\,')) gz_num
    ,gz_cnt.clss2
    from public.ods_gczdw 
    left join ods_area o_ctiy on province_id = o_ctiy.pid
    left join g_z gz_cnt on ods_gczdw.gz_num = g_z.cd
    where to_char(to_timestamp( add_time ) ,'yyyy-mm-dd') 
    between '2021-01-01' and '2021-09-01'
    group by dis_user_id,view_count,o_ctiy."name"
)
select * from b_gz

复制
我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
薛晓刚

add_time 建立索引,然后

where add_time  >  '2021-01-01' and  add_time< '2021-09-01'

不过前提条件是这9个月数据不要太多。如果9个月有上千万,或者一共就10个月。都效果不好。需要缩短时间范围。

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena

首先,你这真是MYSQL?确定不是POSTGRESQL??

  1. ods_gongzhong 的数据量有多少?和下面的ods_gczdw 相比是怎样的?
  2. 在b_gz 中为什么会出现 distinct 和group by 同时存在?确定没有逻辑问题?
  3. 中间的正则切分转数组目的是什么?切出来有多少?
  4. 再就是和楼上一样,字段作为查询条件时,字段本身不要进行格式化处理,你的add_time是什么类型什么值,后面条件直接就用对应的类型的就好了
暂无图片 评论
暂无图片 有用 0
打赏 0
chengang

没有表信息,没有索引信息,没有执行计划

从语句上看,我觉得可以有两点可以优化。
1、第一个with 其实可以直接使用inner join (但我估计优化器已给你优化成了inner join )
2、建一个 to_char(to_timestamp( add_time ) ,‘yyyy-mm-dd’) 的函数索引。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
从TOP看到的内存比从mysql里面看到的多
回答 1
TOP比sys.memoryglobaltotal准确一些,而sys.memoryglobaltotal统计值不准可能有三个原因1)没有在实例启动时就开启所有的内存监控项MySQL8.0之前版本默认只
mysql 查所有的表,需要标注此表是否已分区的sql
回答 3
informationschema.partitions表显示分区表的情况。informationschema.tables表显示所有表的情况。这两个视图可以结合下。
在线修改 MySQL 表结构(记录数在千万级别),有什么好的方法可以保证对业务影响较小?
回答 1
已采纳
用mysql8,在线不停机加字段。
从oracle把数据传输到mysql和sql server和uxdb 有没有传输工具?
回答 1
已采纳
ogg可以。但是blob不一定都行。
mysql如何定时备份数据库备份
回答 4
已采纳
您可以使用以下方法之一来定时备份MySQL数据库:使用mysqldump命令备份数据。在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据
Mysql中有哪几种锁?
回答 7
已采纳
1.表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。2.行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。3.页面锁:开销和加锁
mysql 5.7 要创建 myisam 类型的表, 需要怎么创建?
回答 2
已采纳
showcreatetablekeweitest110\G1.rowTable:keweitest110CreateTable:CREATETABLEkeweitest110(idint(2)NOTN
执行压力测,mysql数据库cpu使用率100%,通过执行show full processlist时state栏提示:Waiting for an event from Coordinator ,产生此类问题如何排查?
回答 3
看下是哪些进程使用的CPU,这有篇教程&lt;MYSQL排查使用CPU多的SQL&gt;https://cloud.tencent.com/developer/article/2147150
如何进行两个MySQL 数据库之间数据增量同步?
回答 2
那么用ogg吧
如何优化这个SQL呢 MySQL
回答 9
已采纳
可以试试(posttype,postdate,&nbsp;poststatus)3字段联合索引;&nbsp;同时把GROUPBYwpposts.ID去掉(id字段应该是主键)