首页 文章

mysql慢查询带有id列表

提问于
浏览
-1

我有一个像以下的mysql表:

create table table (
    id bigint auto_increment
    s_id varchar(30),
    col1 varchar(50),
    col2 varchar(50),
    col3 varchar(30),
    col4 varchar(30),
    col5 int,
    primary key(id),
    index idx_search(col1, col2, col3)
)

该表有超过9000万行数据 . 在上一个查询中,我得到前100名s_id . 现在,我有一个查询来获取s_id的信息:

select s_id, col1, col2, col3, col4, max(col5) from table where col1 = 'XXX' and col2 = 'XXX' and s_id in (?, ?, ?, ...) group by s_id

此查询速度不稳定,范围为100ms至4000ms .

col1='full'col2='full' 时,它在MySQL中拥有超过1000万行数据 .

我也尝试添加像 idx_sid(s_id, col1, col2) 这样的索引,这很无奈 .

如何加快此查询?或任何其他解决方案?

1 回答

  • 0

    当它们的顺序从左到右时,sql索引可以工作 . 因为您已创建索引(s_id,col1,col2),所以 WHERE 子句应按照定义的顺序包含这些列 . 使用以下查询肯定会加快您的响应时间 .

    select s_id, col1, col2, col3, col4 from table where s_id in (?, ?, ?, ...) and col1 = 'XXX' and col2 = 'XXX'

相关问题