【发布时间】:2016-02-24 19:22:45
【问题描述】:
我有两张桌子:
第一个 table1 是动态创建的(当用户从 Web 服务器提交数据时),通常约为 50K 行。第二个表是一个查找表table2,有大约 1000 万行。
我正在尝试将两个表加入四列,如下所示:
从表 1 中选择 t.id 加入表2 米 开(t.name = m.name AND t.pos = m.pos AND t.ref = m.ref AND t.alt = m.alt);我已在 table2 中为 name (VARCHAR)、pos (INT)、ref (CHAR) 和 alt (CHAR) 列编制索引,但查询仍然需要很长时间才能完成.
关于这里可能出现什么问题的任何指针?
谢谢
EXPLAIN的输出:
【问题讨论】:
-
你为什么不用id的?
-
@by0,这些表的引擎是什么?
-
因为我是根据用户在网络服务器上提交的内容加入的,如果这有意义的话。引擎是 InnoDB
-
当我对慢速查询进行故障排除时,我首先看到的是“解释”的结果。你已经试过了吗? dev.mysql.com/doc/refman/5.7/en/explain.html
-
您是制作了 4 个单独的索引,还是制作了一个复合索引?我认为这 4 个单一索引在这里没有帮助 - 如果我错了,请纠正我。