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 サイトの他の関連記事を参照してください。