J'ai une table. Je n'ai besoin que d'exécuter un type de requête: pour trouver une donnée donnée dans la colonne 1, alors obtenez-vous, les 3 premières colonnes publient. P>
Maintenant, combien cela affecterait-il la vitesse si j'ai ajouté quelques colonnes supplémentaires à la table pour "stockage de données" fondamentalement. Je sais que je devrais utiliser une table de sapare, mais supposons que je suis contraint d'avoir seulement 1 table, de sorte que le seul moyen est d'ajouter certaines colonnes à la fin. p>
Donc, si j'ajoute des colonnes, disons 10 à la fin, 30 Varcharne chacun, cela va-t-il ralentir toute requête donnée dans la première phrase? Si oui, par combien de facteur pensez-vous comparé sans les colonnes supplémentaires de SchoDuntantes et présentes? P>
3 Réponses :
Oui, les données supplémentaires peuvent ralentir les requêtes car cela signifie que moins de lignes peuvent s'intégrer dans une page, ce qui signifie que plus d'accès de disque pour lire un certain nombre de lignes et moins de lignes peuvent être mis en cache en mémoire. P>
Le facteur exact dans le ralentissement est difficile à prédire. Cela pourrait être négligeable, mais si vous êtes près de la frontière entre pouvoir cacher la table entière en mémoire ou non, quelques colonnes supplémentaires pourraient faire une grande différence pour la vitesse d'exécution. La différence dans le temps nécessaire pour récupérer une ligne d'un cache en mémoire ou de disque est plusieurs ordres de grandeur. P>
Si vous ajoutez un Index de couvre Les colonnes supplémentaires doivent avoir moins d'impact comme La requête peut utiliser l'index relativement étroit sans avoir à se référer à la table principale plus large. P>
Bonjour, en ce qui concerne votre réponse et ceci à partir de l'original: il suffit d'exécuter un type de requête: trouver une valeur unique donnée dans la colonne 1 (colonne de clé primaire), alors obtenez-en, les 3 premières colonnes. Étant donné que la colonne 1 est la principale clé unique de ma table, cela signifie-t-il que MySQL ne cache que 1 rangée, et donc le seul ralentissement sera causé en devoir lire dans les parties supplémentaires de cette rangée seulement? ou y a-t-il quelque chose qui me manque?
Je ne comprends pas le "Je sais que je devrais utiliser un bit de table séparé". Ce que vous avez décrit est la raison pour laquelle vous avez une DB, d'associer une clé avec certaines données connexes. Regardez-y une autre façon, comment sinonez-vous ces informations si vous n'avez pas la clé? P>
Pour répondre à votre question, le seul moyen de savoir ce que le succès de la performance sera des tests empiriques (bien que la réponse de Mark, affichée juste avant le mien, est un de très nombreux facteurs à la vitesse). P >
Les tests nécessitent une quantité de temps grave pour créer une base de données de test (au moins 1 jour) puis le traitement ... Donc, j'espérais juste que quelqu'un puisse vivre ...
Cela dépend un peu de la quantité de données que vous avez déjà dans les enregistrements. La différence serait normalement quelque part entre presque aucun du tout pour pas si gros. P>
La différence provient de la quantité de données supplémentaires à charger du disque pour accéder aux données. Les colonnes supplémentaires signifieront probablement qu'il y ait de la place pour moins d'enregistrements dans chaque page, mais il est possible qu'il soit suffisamment disponible dans chaque page pour la plupart des données supplémentaires afin qu'il y ait peu de blocs supplémentaires nécessaires. Cela dépend de la qualité des lignes de données actuelles dans les pages. P>