id > 0 – 永夜 https://www.shuijingwanwq.com 没有不值得去解决的问题,也没有不值得去学习的技术! Tue, 21 May 2024 01:52:46 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 在 MySQL 8.0 中,查询表记录总数时,超时的分析优化 https://www.shuijingwanwq.com/2024/05/21/8590/ https://www.shuijingwanwq.com/2024/05/21/8590/#comments Tue, 21 May 2024 01:52:46 +0000 0]]> https://www.shuijingwanwq.com/?p=8590 Post Views: 114 1、一个接口请求响应超时,原因在于 count(*) SQL 耗时 54 秒。表中数据量超过 1000万 条。如图1
一个接口请求响应超时,原因在于 count(*) SQL 耗时 54 秒。表中数据量超过 1000万 条

图1



SELECT
	count(*) AS AGGREGATE 
FROM
	`tables`


2、其中表字段 shipping_type 有添加索引,且其值仅有 1、2 两种可能。决定添加 where 条件 shipping_type IN (1,2)。查询时长 3 秒。如图2
其中表字段 shipping_type 有添加索引,且其值仅有 1、2 两种可能。决定添加 where 条件 shipping_type IN (1,2)。查询时长 3 秒

图2



SELECT
	count(*) AS AGGREGATE 
FROM
	`tables` 
WHERE
	shipping_type IN (
	1,
	2)


3、最终决定基于主键 ID 作为 where 条件,以尽量保持所有 count SQL 的 where 条件的统一。当一条 count SQL 没有 where 条件存在时,就添加 WHERE id > 0。耗时 4 秒,符合预期。如图3
最终决定基于主键 ID 作为 where 条件,以尽量保持所有 count SQL 的 where 条件的统一。当一条 count SQL 没有 where 条件存在时,就添加 WHERE id > 0。耗时 4 秒,符合预期

图3

]]>
https://www.shuijingwanwq.com/2024/05/21/8590/feed/ 1