我的表中有50K条记录。这是我的问题。
SELECT * FROM user_details WHERE user_id > 10 AND status = 1 LIMIT 0,10当我“解释”这个查询时,它仍然遍历了24959行。它是否可以更优化,这样它可以遍历更少的行?

发布于 2020-06-15 04:23:28
您同时使用user_id > 10和status = 1进行过滤。
status上没有索引。
user_id > 10几乎是表中的每一行。全表扫描将比使用索引更快。
所以优化器决定全表扫描将是最快的。
您可以通过在status上添加索引来修复此问题。更长期的解决方案可能是在status上使用partition the table。
旁注:与其依赖于神奇的user_id,不如考虑将an explicit field添加到user中来指明它们的角色。
https://stackoverflow.com/questions/62377446
复制相似问题