MySQL: UUIDかAUTO_INCREMENTか?UUID v7による最適化戦略

MySQL tutorial - IT technology blog
MySQL tutorial - IT technology blog

5分でできる実証実験

違いを明確にするために、MySQLで3つのテーブルを作成してみましょう。従来の自動インクリメント(BIGINT)と、文字列型(string)およびバイナリ型(binary)の2種類のUUIDで、ストレージ効率を比較します。

-- 従来の方法:メモリ消費が最も少ない
CREATE TABLE users_auto (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50)
);

-- 「ナイーブ」な方法:UUIDを文字列として保存(データ増大時に極めて低速)
CREATE TABLE users_uuid_string (
    id CHAR(36) PRIMARY KEY,
    username VARCHAR(50)
);

-- プロフェッショナルな方法:UUID v7をバイナリ形式で保存
CREATE TABLE users_uuid_v7 (
    id BINARY(16) PRIMARY KEY,
    username VARCHAR(50)
);

Share: