8
votes

MySQL Medium int contre performance int

J'ai une table d'utilisateurs simples, je suppose que les utilisateurs maximums que je vais avoir est de 300 000.

Actuellement, j'utilise: xxx

bien sûr que j'ai De nombreuses autres tables pour lesquelles les utilisateurs (ID) sont une clé étrangère.

J'ai lu que, étant donné que l'ID ne va pas utiliser le maximum maximum d'int, il est préférable d'utiliser: MIXIMINTY et il donnera une meilleure performance.

est-il vrai?

(J'utilise MySQL sur Windows Server 2008)


4 Réponses :


3
votes

Il ne devrait pas y avoir de différence de performance, le seul avantage que vous obtenez est une taille de table légèrement plus petite. Quoi qu'il en soit, pour seulement 300 000 rangées, vous ne devriez pas avoir à vous soucier.


0 commentaires

5
votes

qui s'appelle micro-optimisation et non un problème.
Essayez de vous demander (vous-même en premier lieu) des questions de performance basées uniquement sur l'expérience réelle, pas l'imagination. Et profilage est toujours pour aider à la distinguer un d'un autre.

comme pour le "300k max" - dans le nombre réel de vie a tendance à se développer de manière inattendue. Pourquoi creuser un piège pour vous-même?


0 commentaires

12
votes

Je envisagerais d'utiliser Mimoriint parfois .. sur des rangées 300k .. Mideminint vous donne assez de place jusqu'à 16 millions de lignes (non signées).

Il s'agit non seulement de "taille de table plus petite" lorsque vous utilisez des index. La différence peut être énorme Sur une tables de rangées de 27 m ... Modification de 2 colonnes de Int vers MioriMinint m'a sauvegardé 1 Go (index + Données de table) afin qu'il soit passé de 2,5 Go à 1,5 Go.


0 commentaires

0
votes

Si vous vous souciez de la micro-optimisation de la vitesse, utilisez int .

Un accès de lecture de disque lira un bloc d'octets. La lecture de 4 octets sera donc la même que la lecture de 3 octets.

mais depuis 3 octets entiers ne sont pas originaux pour les processeurs, Mi-MioriMint doit être converti avant de pouvoir être utilisé (memcpy dans un entier de 4/8 octets), entraînant une surcharge, tandis que 4 octets entiers sont natif pour les processeurs et peut être utilisé directement.


0 commentaires