0

我运行这个查询:

SELECT v.autor, v.titlu,  'http://85.25.176.18/resursecrestine-download' + v.`link` 
FROM  `video_resurse` v, predicimp3 p
WHERE v.titlu = p.titlu
ORDER BY v.autor

一切都好。

但是当我用“!=”替换“=”时,它需要很长时间......而不是结果它给了我:

#126 - Incorrect key file for table '/tmp/#sql_42c5_0.MYI'; try to repair it 

为什么?

4

1 回答 1

1

You equal 是一个连接,它通常会返回一组相当小的东西。如果您将 = 替换为 !=,则您将强制数据库执行 CROSS JOIN,然后对其进行过滤以排除任何相等的记录。

要进行交叉连接,数据库可能需要创建一个临时表,其总行数等于(video_resurse 中的行数)*(predicimp3 中的行数)。如果其中任何一个表中有大量行,则临时表可能非常大并且需要很长时间才能生成。因此性能缓慢。

您看到的错误可能表明您在 /tmp 目录(mysql 默认放置其临时表的位置)中运行了我们的空间,这可能导致该错误。

于 2010-01-15T22:28:09.610 回答