V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  encro  ›  全部回复第 74 页 / 共 161 页
回复总数  3207
1 ... 70  71  72  73  74  75  76  77  78  79 ... 161  
2022-03-29 08:57:48 +08:00
回复了 huangzhe8263 创建的主题 数据库 GitHub 解释近期频繁宕机原因: MySQL 不堪重负
@Jinnyu

PG 吊打 MySQL ,是指个别特种索引或者加了物化视图的吧。

不过确实如果当下做程序,推荐用 PG ,因为 MySQL 在 OLAP 领域还没起步,而基本很多业务其实都会涉及 OLAP ,特别是 PG 增量物化视图如果在能 16 版本出来,那么 SQL SERVER ,Oracle 存在意义就少很多了。
2022-03-28 23:24:48 +08:00
回复了 tuding 创建的主题 宽带症候群 记一次对电信的投诉
呆过三个城市,都是光猫营业厅立马销户
2022-03-28 21:44:29 +08:00
回复了 iGuChin 创建的主题 加密货币 最近显卡价格大降,买点来挖 ETC,会不会 49 年入国军?
如 @dooonabe #68 所说:

显卡降价的原因是因为挖矿方式变了,不依赖算力了。
2022-03-28 21:37:59 +08:00
回复了 supuwoerc 创建的主题 职场话题 如何感谢 HR
最好的办法 ---------------- 在 v2 多帮她招聘几个人
2022-03-26 10:52:04 +08:00
回复了 xiayushengfan 创建的主题 程序员 ubuntu20.04 如何安装微信
据说先登录下文件传输助手,就能登录 web 微信了。

https://filehelper.weixin.qq.com/

https://wx.qq.com/
就是看同表更新好像是需要建立临时表。不知道 8.0 了。
@CyJaySong

不知道,前面也加了 isnull 。
INSERT INTO trade_account_total_daily_record (`date`, `account_type`, `balance`)
SELECT CURRENT_DATE , 4, IFNULL((SELECT balance FROM trade_account_total_daily_record WHERE account_type = 4 ORDER BY `date` DESC LIMIT 1),0) + 10
ON DUPLICATE KEY UPDATE `balance`=`balance`

?
LIMIT 1 不是只有一行结果吗?还需要 sum?
@CyJaySong

你删掉当天存在的值再试试,说不定没跑查询或者命中 cache 呢。

INSERT INTO trade_account_total_daily_record (`date`, `account_type`, `balance`)
SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d'), 4, IFNULL(SUM(tmp.balance),0) + 10,FROM (SELECT balance FROM trade_account_total_daily_record WHERE account_type = 4 ORDER BY `date` DESC LIMIT 1) AS tmp
ON DUPLICATE KEY UPDATE `balance`=VALUES(`balance`)


我还没琢磨透 SUM(tmp.balance) 和 WHERE account_type = 4 ORDER BY `date` DESC LIMIT 1 的用意。。。。
where account_type = 4 ORDER BY date DESC LIMIT 1

索引顺序导致用不了主键索引。。。
@CyJaySong

ORDER BY date DESC LIMIT 1 ,一条语句主键,谈什么性能?
我是想每天都只加当天的,没必要去加前一天的。
@CyJaySong

明白了,你是想不存在查前一天的,再累加。
replace into trade_account_total_daily_record set `balance`=balance+10 where date=CURRENT_DATE and account_type = 4

更新日结用我这个就可以了。
哈哈,你需要一个物化视图。
果然 pg 才是最好选择。
mysql replace into 应该比你这个更好用。
SUM(balance) + LIMIT 1 我看不出这是想干啥?

看起来希望:

replace into trade_account_total_daily_record set `balance`=balance+10 where date=CURRENT_DATE and account_type = 4 ORDER BY date DESC LIMIT 1
DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d') 直接换成 CURRENT_DATE 试试?
sorry 是我看错了。
SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d'), 1, IFNULL(SUM(balance),0) + 10
FROM trade_account_total_daily_record WHERE account_type = 1 ORDER BY date DESC LIMIT 1


这条语句写的莫名其妙。
1 ... 70  71  72  73  74  75  76  77  78  79 ... 161  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2081 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 921ms · UTC 10:29 · PVG 18:29 · LAX 03:29 · JFK 06:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.