"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Why Store UUIDs as Numbers in MySQL for Improved Performance?

Why Store UUIDs as Numbers in MySQL for Improved Performance?

Posted on 2025-02-06
Browse:385

Why Store UUIDs as Numbers in MySQL for Improved Performance?

Storing UUIDs as Numbers in MySQL

Storing UUIDs as strings in MySQL can result in performance issues, especially when indexing is involved. An alternative approach suggested by an expert is to store UUIDs as numbers for improved performance. Let's explore how this can be done in Ruby.

Removing Dashes and Transforming to Binary

The first step is to remove the dashes from the UUID. For example, a UUID like "110E8400-E29B-11D4-A716-446655440000" becomes "110E8400E29B11D4A716446655440000".

Since UUIDs consist of 128 bits, we can store them as a BINARY(16) data type in MySQL. BINARY data types in MySQL use the binary representation, which is more efficient for processing than strings.

Example SQL Query

To insert a UUID into a BINARY field, use the following query:

INSERT INTO table_name (field_binary) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))

To retrieve the UUID, use the following query:

SELECT HEX(field_binary) AS field_binary FROM table_name

Ruby Code Integration

In Ruby, you can use the UUIDtools gem to generate UUIDs and convert them to binary. The gem provides methods like UUID.new and UUID.hex_to_bin. For example:

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})/, '\1-\2-\3-\4-\5')

By following these steps, you can efficiently store and retrieve UUIDs as binary numbers in MySQL, enhancing performance when using indexed UUIDs.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3