2010-01-15 7 views
0

Je lance cette requête:problème de requête MySQL

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 

tout ce qu'il est ok.

Mais quand je remplacerai « = » avec elle prend beaucoup de temps ... et au lieu de résultats, il me donne « =! »:

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

Savez-vous pourquoi?

Répondre

1

Vous égalisez est une jointure, qui renvoie généralement un assez petit ensemble de choses. Si vous remplacez = =! =, Vous forcez la base de données à faire un CROSS JOIN et ensuite filtrer pour exclure tous les enregistrements égaux.

Pour effectuer le CROSS JOIN, le DB doit probablement créer une table temporaire avec un nombre total de lignes égal à (nombre de lignes dans video_resurse) * (nombre de lignes dans predicimp3). Si l'une de ces tables contient un grand nombre de lignes, la table temporaire risque d'être très volumineuse et de prendre beaucoup de temps à générer. D'où la lenteur des performances. L'erreur que vous voyez est probablement indiquant que vous avez couru notre espace dans le répertoire/tmp (où mysql place ses tables temporaires par défaut) ce qui peut causer cette erreur.

+0

Vous aviez absolument raison. Il n'y avait pas assez d'espace pour la requête sql. Merci beaucoup. –