Stockage des UUID sous forme de nombres dans MySQL
Le stockage des UUID sous forme de chaînes dans MySQL peut entraîner des problèmes de performances, en particulier lorsque l'indexation est impliquée. Une approche alternative suggérée par un expert consiste à stocker les UUID sous forme de nombres pour améliorer les performances. Explorons comment cela peut être fait dans Ruby.
Suppression des tirets et transformation en binaire
La première étape consiste à supprimer les tirets de l'UUID. Par exemple, un UUID tel que "110E8400-E29B-11D4-A716-446655440000" devient "110E8400E29B11D4A716446655440000".
Étant donné que les UUID sont constitués de 128 bits, nous pouvons les stocker en tant que type de données BINARY(16) dans MySQL. . Les types de données BINARY dans MySQL utilisent la représentation binaire, qui est plus efficace pour le traitement que les chaînes.
Exemple de requête SQL
Pour insérer un UUID dans un champ BINARY, utilisez la requête suivante :
INSERT INTO table_name (field_binary) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))
Pour récupérer l'UUID, utilisez la requête suivante :
SELECT HEX(field_binary) AS field_binary FROM table_name
Intégration de code Ruby
Dans Ruby, vous pouvez utiliser la gemme UUIDtools pour générer des UUID et les convertir en binaire. La gemme fournit des méthodes telles que UUID.new et UUID.hex_to_bin. Par exemple :
require 'uuidtools' # Generate a UUID as a string uuid = UUID.new # Remove dashes and convert to binary binary_uuid = uuid.to_s.gsub("-", "").hex_to_bin # Store the binary UUID in MySQL # ... # Retrieve the binary UUID from MySQL # ... # Reconstruct the original UUID with dashes new_uuid = binary_uuid.bin_to_hex.gsub(/(.{8})(.{4})(.{4})(.{4})(.{12})/, '----')
En suivant ces étapes, vous pouvez stocker et récupérer efficacement les UUID sous forme de nombres binaires dans MySQL, améliorant ainsi les performances lors de l'utilisation d'UUID indexés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!