SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('options', 'languages', 'contentTypes', 'codeEventListeners', 'deferredRun', 'simpleCache', 'addOns', 'defaultStyleProperties', 'routeFiltersIn', 'routeFiltersOut', 'routesPublic', 'nodeTypes', 'bannedIps', 'discouragedIps', 'styles', 'displayStyles', 'userBanners', 'smilies', 'bbCode', 'threadPrefixes', 'userTitleLadder', 'reportCounts', 'moderationCounts', 'userModerationCounts', 'notices', 'userFieldsInfo')
Run Time: 0.000576
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 26 | Using where |
SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('brListenerClasses', 'brBriviumAddOns')
Run Time: 0.000196
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 2 | Using where |
SELECT *
FROM xf_brivium_addon
ORDER BY addon_id
Run Time: 0.000144
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_brivium_addon | index | | PRIMARY | 77 | | 1 | |
INSERT INTO xf_data_registry
(data_key, data_value)
VALUES
(?, ?)
ON DUPLICATE KEY UPDATE
data_value = VALUES(data_value)
Params: brBriviumAddOns, a:0:{}
Run Time: 0.000139
SELECT cache_value
FROM xf_permission_combination
WHERE permission_combination_id = ?
Params: 1
Run Time: 0.000173
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_permission_combination | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT thread.*
,
user.gender, user.avatar_date, user.gravatar,
NULL AS thread_read_date,
0 AS thread_reply_banned,
0 AS thread_is_watched,
'' AS draft_message, NULL AS draft_extra
FROM xf_thread AS thread
LEFT JOIN xf_user AS user ON
(user.user_id = thread.user_id)
WHERE thread.thread_id = ?
Params: 371289
Run Time: 0.000513
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT node.*, forum.*
,
permission.cache_value AS node_permission_cache,
NULL AS forum_read_date
FROM xf_forum AS forum
INNER JOIN xf_node AS node ON (node.node_id = forum.node_id)
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = 1
AND permission.content_type = 'node'
AND permission.content_id = forum.node_id)
WHERE node.node_id = ?
Params: 38
Run Time: 0.000391
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | forum | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | node | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | permission | const | PRIMARY | PRIMARY | 35 | const,const,const | 1 | |
SELECT post.*
,
thread.*, thread.user_id AS thread_user_id, thread.username AS thread_username,
thread.post_date AS thread_post_date,
post.user_id, post.username, post.post_date,
bb_code_parse_cache.parse_tree AS message_parsed, bb_code_parse_cache.cache_version AS message_cache_version,
user.*, IF(user.username IS NULL, post.username, user.username) AS username,
user_profile.*,
user_privacy.*,
signature_parse_cache.parse_tree AS signature_parsed, bb_code_parse_cache.cache_version AS signature_cache_version,
session_activity.view_date AS last_view_date,
0 AS like_date
FROM xf_post AS post
INNER JOIN xf_thread AS thread ON
(thread.thread_id = post.thread_id)
LEFT JOIN xf_bb_code_parse_cache AS bb_code_parse_cache ON
(bb_code_parse_cache.content_type = 'post' AND bb_code_parse_cache.content_id = post.post_id)
LEFT JOIN xf_user AS user ON
(user.user_id = post.user_id)
LEFT JOIN xf_user_profile AS user_profile ON
(user_profile.user_id = post.user_id)
LEFT JOIN xf_user_privacy AS user_privacy ON
(user_privacy.user_id = post.user_id)
LEFT JOIN xf_bb_code_parse_cache AS signature_parse_cache ON
(signature_parse_cache.content_type = 'signature' AND signature_parse_cache.content_id = post.user_id)
LEFT JOIN xf_session_activity AS session_activity ON
(post.user_id > 0 AND session_activity.user_id = post.user_id AND session_activity.unique_key = CAST(post.user_id AS BINARY))
WHERE (
(post.thread_id = ? AND (post.position >= 0 AND post.position < 10) )
)
AND (post.message_state IN ('visible'))
ORDER BY post.position ASC, post.post_date ASC
Params: 371289
Run Time: 0.004311
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | Using filesort |
SIMPLE | post | ref | thread_id_post_date,thread_id_position | thread_id_post_date | 4 | const | 1 | Using index condition; Using where |
SIMPLE | bb_code_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.post_id | 1 | Using where |
SIMPLE | user | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_profile | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_privacy | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | signature_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.user_id | 1 | Using where |
SIMPLE | session_activity | eq_ref | PRIMARY | PRIMARY | 22 | xenforo.cc.post.user_id,func | 1 | Using where |
INSERT INTO xf_thread_view
(thread_id)
VALUES
(?)
Params: 371289
Run Time: 0.000091
INSERT INTO `xf_session` (`session_id`, `session_data`, `expiry_date`) VALUES (?, ?, ?)
Params: 7d656b71b214962f459fea6d98920b43, a:8:{s:12:"sessionStart";i:1714923775;s:2:"ip";s:4:"v";s:11:"sessionCsrf";s:16:"A8tQ1kQg8f3J9AHx";s:9:"userAgent";s:103:"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)";s:7:"robotId";s:0:"";s:16:"previousActivity";i:0;s:10:"isIpBanned";a:2:{s:6:"result";b:0;s:7:"version";i:1621687349;}s:15:"isIpDiscouraged";a:2:{s:6:"result";b:0;s:7:"version";i:1484570488;}}, 1714927375
Run Time: 0.001143
INSERT INTO xf_session_activity
(user_id, unique_key, ip, controller_name, controller_action, view_state, params, view_date, robot_key)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
ip = VALUES(ip),
controller_name = VALUES(controller_name),
controller_action = VALUES(controller_action),
view_state = VALUES(view_state),
params = VALUES(params),
view_date = VALUES(view_date),
robot_key = VALUES(robot_key)
Params: 0, v, v, XenForo_ControllerPublic_Thread, Index, valid, thread_id=371289, 1714923775,
Run Time: 0.000108
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 377925, a:35:{i:0;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:54:"https://pic4.zhimg.com/ebba3f748_l.jpg?source=8673f162";}}i:1;s:21:" chenqin,数据帝 ";i:2;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:58:"https://www.zhihu.com/question/441055229/answer/1697930259";s:8:"original";a:2:{i:0;s:66:"[URL='https://www.zhihu.com/question/441055229/answer/1697930259']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}i:3;s:70:"
1 月 26 日,全球新冠肺炎确诊患者超过了 1 亿例。
";i:4;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic1.zhimg.com/v2-1fba4cb389e6dd17f2d7dcf2fbff1bdc_720w.jpg?source=8673f162";}}i:5;s:1053:"
而在一年前的今天,是大年初二,全国病例还不到 2000,基本集中在武汉,死亡人数共 56 人。许多地方只有零星病例——比如江苏在去年此时刚刚报告了首例新冠肺炎患者。人们对新冠的认识只是一个新的 SARS,总觉得他是一个几个月就能搞定的流行病。
当时的我们,可能谁也都没法想到,它将成为了人类百年来夺取最多人命的流行病——也许没有之一(西班牙流感刚好超过了一百年)。
犹记得当新冠在国内传染时,我们采取了完全封锁的措施,而这样的措施在世界其他国家引发了一些争议。一些国家(大家都知道是谁)认为,不应封锁,封锁会使得经济崩溃,造成更多死亡,群体感染才是正确的路径;另一些国家则认为,应当封锁,直至疫情完全消除,再重新开放经济。
在新冠患者确诊超过一亿之际,我们可以回答第一个问题——要经济,还是要人命?哪一种才是正确的选择?
";i:6;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic2.zhimg.com/v2-32b8a2638c5b61fe18dfbc64f769d37b_720w.jpg?source=8673f162";}}i:7;s:486:"
上图列出了各国在 2020 年的死亡数倍数和 2020 年 GDP 增速变化之间的关系(数据解释见文末),在图中:
横轴为各地区在 2020 年 2-12 月的总死亡人数比往年同期增加的比例,0 表示死亡数不变,1 表示死亡数增加 100%。
纵轴为各地区 2020 年 GDP 增速减去 2019 年 GDP 增速,0 表示增速完全不变,-10 表示增速绝对值下降 10%,比如从 +5% 变为 -5%。
从上图上我们可以发现,";i:8;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:66:"「要经济还是要人命」的选择,是完全不存在的。";}}i:9;s:631:"
如果一个地区能在经济和人命中进行选择,那么他们构成的散点图应当向上倾斜,比如新冠死亡越多,经济就越好;死亡少的地区,经济越差。
但并没有这样的两头给你选,死亡倍数和经济下滑是同时出现的,死亡越多的地区,经济下滑也越严重。死亡超过了往年 120% 的秘鲁,经济下滑的程度也是全球首屈一指。
而在图片的左上角,包括了三个地区,分别是中国台湾地区、挪威以及韩国,都是超额死亡极少或者为负数,经济下滑也最少的地区。
所以只有一个选择——
";i:10;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:81:"首先控制疫情,那么既不会有超额死亡,也不会有经济下滑。";}}i:11;s:2:"
";i:12;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:63:"首先保住经济,那么人都死了,经济照样下滑。";}}i:13;s:100:"
疫情的控制必须要先于经济,这个问题能达到共识。
那么下一个问题是,";i:14;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:42:"如何用尽可能小的成本控制疫情";}}i:15;s:31:"?
可以看下一张图:
";i:16;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic4.zhimg.com/v2-845d9022563402addb384ec0d6223acb_720w.jpg?source=8673f162";}}i:17;s:141:"
上图的横轴为 2020 年各地区防控最严格时期的人流量下降程度,纵轴为 GDP 下滑程度。
从上图可以看到,";i:18;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:70:"疫情防控时期对人流量的控制越严格,GDP 下滑越严重";}}i:19;s:2158:",两者相关程度相当高。
但同时我们也能发现,在第一张图中出现在图片最左边的死亡倍数最少的 6 个地区——中国台湾地区、韩国、日本、泰国、挪威、丹麦,在第二张散点图中却有很大差异。
例如中国台湾地区的人流量下降最低,即使在居家令最严格的时期,人口流量也仅仅下降了 24%。类似的还有韩国。
相反,丹麦在居家令最严格的时期,人口流量下降了 58%,他的经济也下滑了 7.3%。
为什么同样是将疫情控制在比较低的范围内,各地区之间的防控代价差别却如此之大呢?
一个差异出现在入境时的控制。
比如中国台湾地区,对入境游客要求 14 天的居家隔离(如果没有家庭住所,则进行集中隔离)。14 天隔离期结束后,还要再进行 7 天的自我健康管理。
而丹麦只要求 10 天的隔离,且隔离后若有阴性测试,则能够提前结束隔离。这可能会使得丹麦的外来输入病例更容易扩散,因此需要更严格的本地防控来抑制。
但除此之外,还有没有其他差异?有哪些地方是可以扬弃的?
去年这个时候,我写过一个想法,提到这么一句:
「疫情的防控是一道开放题,没有标准答案,每个国家都要在自己的国情上做出最合适的选择。不要着急评价谁应该拿高分谁会得零分,对整个世界来说,这一场要命的考试才刚刚开始。」
显然,这场考试已经出现了许多零分选手,但对于高分段选手来说,考试并没有要结束的意思。在疫情扩散超过一年,确诊患者突破一亿的今天,如何与疫情共存,一起长期生活,还有很多值得思考的地方。
因此,在目前一些地方疫情有所抬头的时候,不要一有质疑声就急着让人在 0 例感染和 2000 万例感染中间选。就像一个学生考完试,150 分里能拿 140 了,但他觉得某一道大题的参考答案还有可商榷之处。此时相比你也没必要跟人家说,你质疑参考答案?你是不是想考零分?
数据来源:
";i:20;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:16:"1,死亡数字";}}i:21;s:26:"
在文中我没有使用";i:22;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:36:"各国公布的新冠死亡人数,";}}i:23;s:640:"这是因为一些国家极大低估了自己由于新冠造成死亡的人数,使得该数字失真。比如印度尼西亚的雅加达,截止到 2020 年 12 月底,报告新冠死亡人数共 3287 人,而实际上雅加达比往年同期多死亡了 1.7 万人之多,实际死亡人数超过了报告人数的 5 倍。在秘鲁、墨西哥、巴西、印度等地,当地统计部门或者卫生部门报告的总死亡人数都要远多于被归类于新冠的死亡人数。
我们使用这一份已经整理好的数据来计算各国的超额死亡倍数,他报告了各国统计部门公布的各时期死亡人数:
";i:24;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:109:"http://link.zhihu.com/?target=https%3A//github.com/nytimes/covid-19-data/blob/master/excess-deaths/deaths.csv";s:8:"original";a:2:{i:0;s:117:"[URL='http://link.zhihu.com/?target=https%3A//github.com/nytimes/covid-19-data/blob/master/excess-deaths/deaths.csv']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:77:"https://github.com/nytimes/covid-19-data/blob/master/excess-deaths/deaths.csv";}}i:25;s:82:"
由于 2020 年是普查年份,中国内地目前尚未公布死亡人数。
";i:26;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:16:"2,经济数字";}}i:27;s:200:"
由于大部分地区尚未公布 2020 年的 GDP 增速,GDP 增速(包括中国台湾地区)使用了 IMF 的 10 月预报。2019 年的各地区实际 GDP 增长数字来自世界银行。
";i:28;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:108:"http://link.zhihu.com/?target=https%3A//www.imf.org/external/datamapper/NGDP_RPCH%40WEO/OEMDC/ADVEC/WEOWORLD";s:8:"original";a:2:{i:0;s:116:"[URL='http://link.zhihu.com/?target=https%3A//www.imf.org/external/datamapper/NGDP_RPCH%40WEO/OEMDC/ADVEC/WEOWORLD']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:74:"https://www.imf.org/external/datamapper/NGDP_RPCH@WEO/OEMDC/ADVEC/WEOWORLD";}}i:29;s:2:"
";i:30;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:22:"3,人口流量数字";}}i:31;s:360:"
大部分地区数据来自 Google Mobility,该报告中有每个地区每天各种类型的人口流量变化,我们计算了每个地区连续 15 天内的人口流量下降程度,并保留其最低值。比如一个地区在 2020 年时居家令最严格的连续 15 天的人口流量平均只有正常水平的 50%,则对该地区记录 -50。
";i:32;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:72:"http://link.zhihu.com/?target=https%3A//www.google.com/covid19/mobility/";s:8:"original";a:2:{i:0;s:80:"[URL='http://link.zhihu.com/?target=https%3A//www.google.com/covid19/mobility/']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:40:"https://www.google.com/covid19/mobility/";}}i:33;s:56:"
Google Mobility 没有内地的人口流量数据。
";i:34;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:40:"https://www.zhihu.com/question/441055229";s:8:"original";a:2:{i:0;s:48:"[URL='https://www.zhihu.com/question/441055229']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}}, 1621686945, 1714923775
Run Time: 0.001424