我有以下的MySQL查询:
SELECT pool.username
FROM pool
LEFT JOIN sent ON pool.username = sent.username
AND sent.campid = 'YA1LGfh9'
WHERE sent.username IS NULL
der = 'f'
AND (`location` = 'united states' OR `location` = 'us' OR `location` = 'usa');问题是池表包含数百万行,并且此查询需要12分钟才能完成。我意识到在这个查询中,整个左表(池)正在被扫描。池表具有自动递增的id行。
我想将此查询拆分为多个查询,以便不扫描整个池表,我一次扫描1000行,而在下一个查询中,我将拾取从哪里离开(1000-2000,2000-3000)等关于使用id列来跟踪。
我如何在我的查询中指定这个?如果你知道答案,请举例说明。谢谢。
如果有帮助,这里是我的索引:
mysql> show index from main.pool;
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------
本文发布于:2024-02-04 08:18:10,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170702909353881.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |