如何优化以下 SELECT WHERE IN 情况?
我有一个包含超过 1 亿行且只有 3 列的表。主键 (col1) 是 127 varchar。我正在执行 SELECT col1 WHERE col1 IN (...),其中 IN 子句是 5,000 个字符串。我只是想看看数据库中 5,000 个字符串中的哪一个作为主键。
对于专用服务器和 InnoDB 表,查询需要 3 到 10 秒,这是不可接受的。我不认为 1 亿多行对于 MySQL 来说应该不会太困难,即使选择 5k 行,但也许我错了?
可以做些什么来优化这个?我读过一些关于 FULLTEXT 键的内容 - 因为键是 127 varchar,所以这些会更好吗?或者某种类型的 JOIN 或 UNION 是否会比大型 IN 子句加速此查询?
任何帮助,将不胜感激!谢谢!
- - 编辑 - -
SHOW ENGINE INNODB STATUS;
| InnoDB | |
=====================================
2014-07-14 10:59:19 2bf5cf25700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the …Run Code Online (Sandbox Code Playgroud)