J'ai exécuté la requête suivante à la fois dans phpMyAdmin & MySQLdb (python).MySQLdb est extrêmement lent avec de grands ensembles de résultats
SELECT *, (SELECT CONCAT(`id`, '|', `name`, '|', `image_code`)
FROM `model_artist` WHERE `id` = `artist_id`) as artist_data,
FIND_IN_SET("metallica", `searchable_words`) as find_0
FROM `model_song` HAVING find_0
phpMyAdmin dit que la requête a 2ms. Mon code python disait qu'en utilisant MySQLdb la requête prenait 848ms (sans même aller chercher les résultats).
Le code python:
self.db = MySQLdb.connect(host="localhost", user="root", passwd="", db="ibeat")
self.cur = self.db.cursor()
millis = lambda: time.time() * 1000
start_time = millis()
self.cur.execute_cmd("""SELECT *, (SELECT CONCAT(`id`, '|', `name`, '|', `image_code`)
FROM `model_artist` WHERE `id` = `artist_id`) as artist_data,
FIND_IN_SET("metallica", `searchable_words`) as find_0
FROM `model_song` HAVING find_0""")
print millis() - start_time
Si vous exécutez cette requête sur la ligne de commande MySQL, quelle heure vous obtenez? – dusan
Combien d'enregistrements sont renvoyés? Êtes-vous _sure_ phpMyAdmin a effectué la requête? –