帮忙解决一下读慢

mysql> show create table t_asset \G
*************************** 1. row ***************************
Table: t_asset
Create Table: CREATE TABLE t_asset (
id bigint(20) NOT NULL,
ast_type int(11) NOT NULL COMMENT ‘id’,
act_id bigint(20) NOT NULL COMMENT ‘id’,
ccy_id int(11) NOT NULL COMMENT ‘id’,
uid bigint(20) NOT NULL COMMENT ‘用户id’,
avail decimal(36,18) DEFAULT NULL COMMENT ‘可用’,
trd_hold decimal(36,18) DEFAULT NULL COMMENT ‘’,
non_trd_hold decimal(36,18) DEFAULT NULL COMMENT ‘冻结’,
iso_avail decimal(36,18) DEFAULT NULL COMMENT ‘金’,
iso_hold decimal(36,18) DEFAULT NULL COMMENT ‘冻结’,
net_debt decimal(36,18) DEFAULT NULL COMMENT ‘净负债’,
version bigint(20) NOT NULL DEFAULT ‘0’,
c_time bigint(20) DEFAULT NULL,
u_time bigint(20) DEFAULT NULL,
state tinyint(4) DEFAULT NULL,
eq decimal(36,18) DEFAULT NULL,
net_mgn decimal(36,18) DEFAULT NULL,
order_lost decimal(36,18) DEFAULT NULL,
asset_value decimal(36,18) DEFAULT NULL,
debt decimal(36,18) DEFAULT NULL,
mm decimal(36,18) DEFAULT NULL,
upl decimal(36,18) DEFAULT NULL,
PRIMARY KEY (uid,id) /*T![clustered_index] CLUSTERED */,
UNIQUE KEY IDX_UNI_ACT_AST_CCY (act_id,ast_type,ccy_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)

SELECT
id,
ast_type,
act_id,
ccy_id,
uid,
avail,
trd_hold,
non_trd_hold,
iso_avail,
iso_hold,
net_debt,
version,
c_time,
u_time,
state,
eq,
net_mgn,
order_lost,
asset_value,
debt,
mm,
upl
FROM
t_asset
WHERE
(id > 240000000014681264)
ORDER BY
id
LIMIT
1000;

是用这个改么
SELECT
floor((t.row_num - 1) / 1000) + 1 AS page_num,
min(t.id) AS start_key,
max(t.id) AS end_key,
count(*) AS page_size
FROM (
SELECT id, row_number() OVER (ORDER BY id) AS row_num
FROM books
) t
GROUP BY page_num
ORDER BY page_num;

大佬可以把执行计划贴出来一起看看,也可以到Dashboard 里确认一下语句分析结果

主键是 PRIMARY KEY (uid ,id )
WHERE
(id > 240000000014681264 会慢,加个id的索引或者主键用id ,uid

1 个赞

id加索引啊

1 个赞

ID只是联合主键的一部分,不是索引,全表扫描,肯定不会快

我看了下现有的索引上不适用的。可以针对ID单独建个唯一索引。然后在子查询中先把ID查查出来,然后再差具体的数据信息。因为使用的非等值查询,一定会走范围扫描。那我们可以减小io,让它走速度更快,占用内存更小的索引范围扫描。然后再通过ID去查询做点查

上计划,看慢在哪里

看下执行计划 慢在哪里

看下执行计划,针对性的创建联合索引

可以把执行计划贴出来一起看看,也可以到Dashboard 里确认一下语句分析结果

可以在id上建个索引试试效果

id加个索引,做延迟关联试一下

explain analyze 截图看下执行计划吧

看看执行计划

把执行计划发出来看一下