パフォーマンスを向上させるために MySQL に UUID を数値として保存するのはなぜですか?

Barbara Streisand
リリース: 2024-11-18 03:28:02
オリジナル
670 人が閲覧しました

Why Store UUIDs as Numbers in MySQL for Improved Performance?

MySQL に UUID を数値として保存する

MySQL に UUID を文字列として保存すると、特にインデックス作成が関係する場合にパフォーマンスの問題が発生する可能性があります。専門家が提案する別のアプローチは、パフォーマンスを向上させるために UUID を数値として保存することです。これを Ruby でどのように実行できるかを見てみましょう。

ダッシュの削除とバイナリへの変換

最初のステップは、UUID からダッシュを削除することです。たとえば、「110E8400-E29B-11D4-A716-446655440000」のような UUID は、「110E8400E29B11D4A716446655440000」になります。

UUID は 128 ビットで構成されるため、BINARY(16) データ型として保存できます。 MySQLで。 MySQL の BINARY データ型は、文字列よりも処理効率が高いバイナリ表現を使用します。

SQL クエリの例

BINARY フィールドに UUID を挿入するには、次を使用します。次のクエリ:

INSERT INTO table_name (field_binary) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))
ログイン後にコピー

UUID を取得するには、次のクエリを使用します:

SELECT HEX(field_binary) AS field_binary FROM table_name
ログイン後にコピー

Ruby コードの統合

Ruby では、 UUIDtools gem を使用して UUID を生成し、バイナリに変換できます。 gem は、UUID.new や UUID.hex_to_bin などのメソッドを提供します。例:

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})/, '----')
ログイン後にコピー

これらの手順に従うと、MySQL で UUID を 2 進数として効率的に保存および取得でき、インデックス付き UUID を使用する場合のパフォーマンスが向上します。

以上がパフォーマンスを向上させるために MySQL に UUID を数値として保存するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート