Maison >base de données >tutoriel mysql >Comment puis-je optimiser le stockage des UUID dans MySQL et améliorer les performances des requêtes ?

Comment puis-je optimiser le stockage des UUID dans MySQL et améliorer les performances des requêtes ?

DDD
DDDoriginal
2024-11-16 12:18:03912parcourir

How can I optimize UUID storage in MySQL and improve query performance?

Optimisation du stockage des UUID dans MySQL : conversion en nombre

Bien que les UUID offrent un caractère unique, leur stockage sous forme de chaînes dans MySQL peut nuire aux performances. Pour améliorer l'efficacité de la récupération des données, il est conseillé de stocker les UUID sous forme de nombres.

Processus de conversion

  1. Supprimer les tirets :
    Éliminez les tirets de l'UUID, par exemple, "110E8400-E29B-11D4-A716-446655440000" devient "110E8400E29B11D4A716446655440000".
  2. BINARY(16) Field :
    MySQL stocke efficacement les UUID dans les champs BINAIRES. Étant donné que les UUID ont 128 bits, BINARY(16) est idéal, car il prend en charge la taille complète de l'UUID.
  3. Insérer à l'aide d'UNHEX() :
    Insérez l'UUID dans le champ BINARY en utilisant la fonction UNHEX(), par exemple :

    INSERT INTO Table (FieldBin) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))
  4. Requête à l'aide de HEX() :
    Pour récupérer l'UUID, utilisez la fonction HEX() , par exemple :

    SELECT HEX(FieldBin) AS FieldBin FROM Table
  5. Réajoutez des tirets :
    Dans votre code Ruby, réinsérez les tirets aux positions appropriées pour qu'ils correspondent au format UUID d'origine.

Exemple

require 'mysql2'

client = Mysql2::Client.new(
  host: 'localhost',
  username: 'root',
  password: 'password',
  database: 'test_database'
)

uuid_binary = client.query(
  'SELECT HEX(FieldBin) AS FieldBin FROM test_table'
).first['FieldBin']

uuid = uuid_binary.insert(9, '-').insert(14, '-').insert(19, '-').insert(24, '-')

puts uuid

En stockant les UUID sous forme de nombres, vous pouvez optimiser la récupération de données dans MySQL, améliorant ainsi considérablement les performances des requêtes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn