Menyimpan UUID sebagai Nombor dalam MySQL
Menyimpan UUID sebagai rentetan dalam MySQL boleh mengakibatkan isu prestasi, terutamanya apabila pengindeksan terlibat. Pendekatan alternatif yang dicadangkan oleh pakar ialah menyimpan UUID sebagai nombor untuk prestasi yang lebih baik. Mari kita terokai cara ini boleh dilakukan dalam Ruby.
Mengalih Keluar Sempang dan Berubah kepada Binari
Langkah pertama ialah mengalih keluar sempang daripada UUID. Contohnya, uuid seperti "110e8400-e29b-11d4-a716-4466554440000" menjadi "110e8400e29b111d4a716446655440000". Jenis data BINARI dalam MySQL menggunakan perwakilan binari, yang lebih cekap untuk pemprosesan daripada rentetan.
Contoh Pertanyaan SQLUntuk memasukkan UUID ke dalam medan BINARI, gunakan pertanyaan berikut:
Untuk mendapatkan semula UUID, gunakan pertanyaan berikut:INSERT INTO table_name (field_binary) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))
SELECT HEX(field_binary) AS field_binary FROM table_name
Dalam Ruby, anda boleh menggunakan permata UUIDtools untuk menjana UUID dan menukarnya kepada binari. Permata menyediakan kaedah seperti UUID.new dan UUID.hex_to_bin. Contohnya:
Dengan mengikut langkah-langkah ini, anda boleh menyimpan dan mendapatkan semula UUID sebagai nombor binari dalam MySQL dengan cekap, meningkatkan prestasi apabila menggunakan UUID yang diindeks.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})/, '----')
Atas ialah kandungan terperinci Mengapa Simpan UUID sebagai Nombor dalam MySQL untuk Peningkatan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!