Manque un index sur spip_urls ?
Nicolas Dorigny <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Salut, suite à une analyse de l'activité Mysql sur un serveur, un hébergeur me remonte que les requêtes du type SELECT id_objet, type, date, url FROM spip_urls WHERE url=? sont les plus consommatrices en temps. J'ai vérifié, et effectivement, la requête ne tape sur aucun index et cherche sur tous les enregistrements : EXPLAIN SELECT id_objet, TYPE, DATE, url FROM spip_urls WHERE url='yo'; +------+-------------+-----------+------+---------------+------+---------+------+-------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-----------+------+---------------+------+---------+------+-------+-------------+ | 1 | SIMPLE | spip_urls | ALL | NULL | NULL | NULL | NULL | 29074 | Using where | +------+-------------+-----------+------+---------------+------+---------+------+-------+-------------+ En ajoutant un index sur la colonne url, ça semble tout de suite mieux : ALTER TABLE `spip_urls` ADD INDEX (`url`); EXPLAIN SELECT id_objet, TYPE, DATE, url FROM spip_urls WHERE url='yo'; +------+-------------+-----------+------+---------------+------+---------+-------+------+-----------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+-----------+------+---------------+------+---------+-------+------+-----------------------+ | 1 | SIMPLE | spip_urls | ref | url | url | 767 | const | 1 | Using index condition | +------+-------------+-----------+------+---------------+------+---------+-------+------+-----------------------+ Sans l'index, la requête prend entre 10 et 13 ms sur mon MariaDB local, avec l'index c'est moins de 0.5 ms. Vous en pensez quoi ? -- nicod_