MySql查询具体某个时间段数据,结果集如何补全该时间段的所有记录并且标记为空值(时间显示除外)

MySql查询具体某个时间段数据,结果集如何补全该时间段的所有记录并且标记为空值(时间显示除外),第1张

我们通过 performance_schema 观察了 memory 引擎的内存分配,由此推算了内部临时表的内存占用情况。

MySQL 在其他元数据中,诸如 information_schema.INNODB_TEMP_TABLE_INFO 中,并不展示内部临时表的信息,如图:

另外值得注意的是:memory 引擎会多划分出不少空间,比如本例中我们的数据是 300025 行 * 4 字节 =~ 1.2M,而引擎分出了 4M 多的内存来进行存储。

因此如果进行估算时,需要将数据量乘以一个较大的系数,才能准确估算。

1.近n个月 

不废话 直接上sql

SELECT

DATE_FORMAT( @cdate := DATE_ADD( @cdate, INTERVAL - 1 MONTH ), '%Y-%m' ) AS cmonth

FROM

( SELECT @cdate := DATE_ADD( '2020-7-1', INTERVAL + 1 MONTH ) FROM information_schema.CHARACTER_SETS ) t0

LIMIT 100

注意 information_schema.CHARACTER_SETS这个表是mysql系统表,可以取到的最大月数和这个表的数量有关,如果又更多的时间要选,可以查询其他表,数据量不要太大,太大会影响查询效率

2 同理 上近n天

SELECT

@cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY )AS DAYS

FROM

( SELECT @cdate := DATE_ADD( '2020-7-1', INTERVAL + 1 DAY ) FROM information_schema.CHARACTER_SETS ) t0

LIMIT 100

order by 排序后面是可以添加多个排序方式的,优先级是从左到右,例如

--先对c.county降序排列,然后再a.corp进行升序排列,最后再对a.time 降序排列

select * from table1 a INNER JOIN table2 b ON a.corp = b.corp and a.code = b.code INNER JOIN table3 c ON a.corp = c.corp where 1=1

order by c.county desc,a.corp asc,a.time desc


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7490670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存