PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli

⇐ retour index

Top 20+ MySQL Best Practices - Tuts+ Code Tutorial

mardi 20 mai 2014 à 10:42
Kevin Vuilleumier, le 19/05/2014 à 13:54
Un article présentant des bonnes pratiques quand on utilise MySQL.
(Permalink)

Timo, le 19/05/2014 à 16:33
La 3 me semble pas mal déjà : ajouter un LIMIT 1 : souvent on ne veut sortir qu’une seule ligne de la DB. Nous on sait que c’est unique, mais pas MySQL. Ici, il s’arrêtera après la première et unique occurence (ça évite qu’il scanne la fin de la DB pour rien).

(via)
— (permalink)
(Permalink)

phyks, le 19/05/2014 à 17:20
(via lehollandaisvolant)
(Permalink)

Famille Michon, le 20/05/2014 à 09:06
Des conseils de bon aloi, évidents ou pas :

- Optimiser les requêtes pour le cache en évitant les appels à CURDATE(), NOW(), RAND(), etc...
- Utiliser EXPLAIN ;
- Utiliser LIMIT ;
- Placer des index de manière judicieuse ;
- Utiliser le même type de colonne pour les JOIN (et les indexer) ;
- Ne pas faire ORDER BY RAND() (je ne savais même pas que ça existait) ;
- Limiter les données récupérées au strict minimum (éviter les SELECT *) ;
- Faire une colonne id ;
- Utiliser un ENUM au lieu d'un VARCHAR si les valeurs possibles sont réduites ;
- PROCEDURE ANALYSE() : donne des suggestions sur le type de champ de chaque table ;
- Utiliser NOT NULL tant que possible ;
- Utiliser des requêtes préparées ;
- Utiliser mysql_unbuffered_query() : répond plus vite, mais ne met pas le résultat en forme ;
- Stocker les adresses IP sous forme de UNSIGNED INT ;
- Si possible, utiliser des tables avec des champs fixes (pas de VARCHAR, TEXT, BLOB). Les enregistrements sont ainsi fixes, ce qui permet un calcul plus rapide de la position des enregistrements dans la table ;
- Faire du partitionnement vertical des tables. Cela consiste à diviser la table en deux (ou plus). Exemples :
  * Placer les champs rarement utilisés dans une autre table : la table principale est alors plus petite, accélérant les recherches ;
  * Placer les champs fréquemment modifiés dans une autre table : une mise à jour a pour effet de supprimer le cache de la table, donc placer ces champs dans une autre table permet de garder ce cache.
 A utiliser uniquement si on est sûr de ne pas faire constamment des JOIN sur ces tables, sinon l'effet de performance sera inverse ;
- Diviser les gros DELETE ou INSERT pour éviter de verrouiller les tables trop longtemps ;
- Utiliser des types de données le plus petit possible (MEDIUMINT au lieu d'INT, DATE au lieu de DATETIME, ...) : une colonne plus petite est plus rapide ;
- Utiliser le moteur de stockage adapté (MyISAM ou InnoDB) ;
- Utiliser un ORM (mouais...) ;
- Etre attentif aux connexions persistantes (réutilisation de la connexion du process Apache avec mysql_pconnect() pour éviter de refaire une connexion initiale à MySQL) car il semble que ça pose des soucis.
(Permalink)

Ecirtam, le 20/05/2014 à 10:42
Quelques bonnes pratiques avec MySQL.
via https://famille-michon.fr/links/?fpmlBg
(Permalink)