J'utilise MySQL pendant des années, principalement sur des projets plus petits jusqu'à la dernière année. Je ne sais pas si c'est la nature de la langue ou de mon manque de vrais tutoriels qui me donne le sentiment d'être incertain si ce que j'écris est la bonne voie à des fins d'optimisation et à des fins de mise à l'échelle. P>
En auto-enseigné dans PHP, je suis très sûr de moi-même et du code que j'écris, puisse facilement le comparer aux autres et ainsi de suite. P>
avec MySQL, je ne suis pas sûr de savoir si (et dans quels cas) une jointure intérieure ou une jointure à gauche doit être utilisée, et je suis conscience de la grande quantité de fonctionnalité qu'elle a. Bien que j'ai écrit du code pour des bases de données qui manipulait des dizaines de millions d'enregistrements, je ne sais pas si c'est optimal. Je trouve souvent qu'un petit tweak fera une requête prendre moins de 1/10 de l'époque originale ... Mais comment puis-je savoir que ma requête actuelle n'est pas aussi lente? P>
J'aimerais devenir tout à fait confiant dans ce domaine dans la possibilité d'optimiser les bases de données et d'être évolutif. L'utilisation n'est pas un problème - je l'utilise quotidiennement de différentes manières. P>
Alors, la question est, quel est le chemin? Lire un livre? Site Web / Tutoriels? Recommandations? P>
6 Réponses :
Le moyen
Droite - Je suis d'accord, j'ai passé un programmeur à temps plein de 1/2 ans et je ressens un expert dans de nombreux autres domaines, dont certains ont passé moins de temps qu'avec MySQL. Je veux prendre la prochaine étape.
Expliquer est votre ami pour un. Si vous apprenez à utiliser cet outil, vous devriez pouvoir optimiser vos requêtes de manière très efficace. p>
- Scannez le manuel MySQL et lisez le livre MySQL de Paul Dubois ' Li>
- Utilisez Explique Select, Afficher les variables, Afficher l'état et afficher les processus de processus. Li>
- Découvrez comment fonctionne l'optimiseur de requête. LI>
- Optimisez vos formats de table. LI>
- Maintenez vos tables (myISAMCHK, table de chèques, optimiser la table). LI>
- Utilisez des extensions MySQL pour faire avancer les choses plus rapidement. LI>
- Écrivez une fonction MySQL UDF si vous remarquez que vous auriez besoin de certains fonction dans de nombreux endroits. li>
- Ne pas utiliser de subvention au niveau de la table ou au niveau de la colonne si vous n'avez pas vraiment besoin IT. LI> ul>
http://dev.mysql.com/ Tech-Ressources / présentations / présentation-oscon2000-20000719 / index.html p> blockQuote>
Je ne sais pas si Mit Open Geacware a quelque chose sur les bases de données ... Eh bien WHADDYA SAVOIR? Ils font: http: // OCW.MIT.EDU/OCWWEB/ELLECTROGIQUE-EnGineering-and-Computer-Science/6-830fall-2005/Coursehome/ P>
Je recommanderais qu'en tant que source basée uniquement sur la réputation des mits. Si vous pouvez suivre un cours formel d'une université, vous pouvez trouver cela utile. En outre, une bonne compréhension des mathématiques / logiques discrètes fondamentales ne ferait certainement aucun mal. P>
Recherche et expérience - Si vous n'avez pas les projets pour justifier la recherche, faites-les. Faites trois tables avec des données connexes et des scénarios de maquillage. P>
E.g. P>
Faire une table de films ses données p>
faire une table d'utilisateur p>
Faire une table des évaluations pour les utilisateurs P>
Passez du temps à apprendre comment se joint à travailler, comment obtenir des films d'une plage de notation particulière dans une requête, comment rechercher la table des films (comme, regregez) - comme mentionné, utilisez Expliquer pour voir comment différentes choses affectent la vitesse. Faire une journée; Je garantisson que votre gérer dessus sera considérablement augmenté. p>
Si vous avez toujours du mal aux scénarios de cas, commencez à regarder ici pour des questions et essayez vous-même ces scénarios. p>
Niveau avancé - voir quels utilisateurs ont les goûts les plus similaires lorsqu'ils évaluent les films. Bien que cela puisse devoir être fait dans un procédé stocké ou PHP.
Comme d'autres personnes ont dit, l'heure et la pratique sont la seule approche réelle. p>
Plus pratiquement, j'ai trouvé que Expliquer a travaillé merveilles pour moi personnellement. Apprendre à lire la production de ceux-ci était probablement le plus grand saut unique que j'ai fait pour pouvoir écrire des requêtes efficaces. P>
La deuxième chose que j'ai trouvée vraiment utile était SQL Tuning par Dan Tow , qui décrit une méthodologie assez formelle pour extraire des performances. C'est un peu impliqué, mais fonctionne bien dans beaucoup de situations. Et si rien d'autre, cela vous donnera une bien meilleure compréhension de la manière dont les jointures sont traitées. P>
Commencez par une classe comme celle-ci: https://www.udemy.com/sql -MySQL-Bases de données / P>
Utilisez ensuite ce que vous avez appris à créer et gérer un certain nombre de bases de données SQL et exécuter des requêtes. Se rendre au niveau expert est vraiment sur la pratique. Mais bien sûr, vous devez apprendre les morceaux avant de pouvoir pratiquer. P>
FWIW, mis à part les optimisations spécifiques à MySQL, vous avez décrit le général SQL. Si vous avez du mal à trouver des tutoriels ou des guides, c'est peut-être parce que vous essayez trop de la recherche?
Vous voyez, je dirais SQL, mais j'ai toujours rencontré le fait que les gens insistent sur le fait que SQL est un peu différent, plus puissant, d'autres caractéristiques. Je suis content que tu dises la même chose ici.