MySQL запрос: неверный ключевой файл для таблицы - PullRequest
0 голосов
/ 16 января 2010

Я запускаю этот запрос:

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 

Почему?

1 Ответ

1 голос
/ 16 января 2010

Вы равны - это объединение, которое обычно возвращает довольно маленький набор вещей. Если вы замените = на! =, Вы заставите БД выполнить CROSS JOIN, а затем отфильтровать его, чтобы исключить любые записи, которые равны.

Чтобы выполнить CROSS JOIN, БД, вероятно, должна создать временную таблицу с общим числом строк, равным (количество строк в video_resurse) * (количество строк вgnimp3). Если в одной из этих таблиц содержится большое количество строк, то временная таблица, вероятно, будет очень большой и генерация займет много времени. Отсюда и низкая производительность.

Ошибка, которую вы видите, вероятно, указывает на то, что вы использовали наш пробел в каталоге / tmp (где mysql по умолчанию помещает свои временные таблицы), что может вызвать эту ошибку.

...