mysql 优化

数据量百万,查询类似如下:

SELECT
    COUNT(*) AS t_count
FROM
    `log_history`
WHERE
    `status` >= 0
AND (
    `txt_id` IN (
        '6',
        '16',
        '19',
        '26',
        '28',
        '39',
        '101',
        '107',
        '117',
        '141',
        '143',
        '144',
        '50',
        '109',
        '54',
        '87',
        '105',
        '110',
        '125',
        '127',
        '130',
        '138',
        '142',
        '145',
        '103',
        '118',
        '104',
        '112',
        '115',
        '123',
        '136',
        '106',
        '116',
        '121',
        '124',
        '126',
        '128',
        '131',
        '146',
        '114',
        '119',
        '120',
        '129',
        '132',
        '137',
        '139',
        '147'
    )
)
LIMIT 1

单表统计,大概10来秒,txt_id已做索引,无效果。如何优化?

EXPLAIN SQL:
clipboard.png

阅读 2.6k
2 个回答
EXPLAIN SELECT
    COUNT(*) AS t_count
FROM
    `log_history`
WHERE
    `status` >= 0
AND (
    `txt_id` IN (
        '6',
        '16',
        '19',
        '26',
        '28',
        '39',
        '101',
        '107',
        '117',
        '141',
        '143',
        '144',
        '50',
        '109',
        '54',
        '87',
        '105',
        '110',
        '125',
        '127',
        '130',
        '138',
        '142',
        '145',
        '103',
        '118',
        '104',
        '112',
        '115',
        '123',
        '136',
        '106',
        '116',
        '121',
        '124',
        '126',
        '128',
        '131',
        '146',
        '114',
        '119',
        '120',
        '129',
        '132',
        '137',
        '139',
        '147'
    )
)
LIMIT 1

结果是什么

status加索引,数据库热数据放入ssd存储器

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题