我有一个约110k行和20列没有索引的塔。我写了一个查询来更新此表JOIN的9列与另一个具有许多索引的表。并且查询需要永远运行。我真的不知道为什么。这是我的疑问:
UPDATE tonghop a JOIN testdone b
ON a.stt = b.stt
SET a.source = b.source, a.pid=b.pid, a.tenbenhnhan = b.fullname,
a.orderdoctor=b.orderdoctor, a.specialty = b.specialty, a.rdate = b.rdate,
a.icd_code = b.icd_code, a.servicegroup = b.servicegroup;
真的很感激,如果有人可以提供帮助
答案 0 :(得分:2)
您正在执行的查询没有WHERE子句,这意味着它将在所有110K记录上执行,并且您的连接列“stt”必须在两个表上编制索引,以便获得更好的性能。 / p>
您应该在“stt”列上添加索引。
答案 1 :(得分:1)
如果两列都没有索引,JOINS会变慢。 您最有可能强制MySql读取110k记录中的每一个以检查它们是否匹配。 使用索引,MySql知道这些记录的位置,并且可以快速找到它们。
尝试在tonghop.stt上添加索引。
您还可以尝试在查询上运行EXPLAIN,看看它是否确实进行了所谓的“全表扫描”。