Nasıl sayı olarak uuıd saklamak için?
Sorunun cevabı dayalı, UUID performance in MySQL, cevap veren kişi bir dize olarak değil UUID saklamak öneririz. Bu yapılabilir nasıl bu kadar emin değilim. Kimse bana bir şey önerebilir misin? Nasıl ruby benim kod ile anlaşma?
CEVAP
Eğer doğru anladıysam, birincil sütun olacak biçimde kullanıyorsun? İnsanlar (integer) düzenli bir birincil anahtar daha hızlı olacak " derler , ama başka bir şekilde MySQL karanlık tarafı kullanarak var. Aslında, MySQL daha hızlı indeksler, gerekli olduğunda başka bir şey daha ikili kullanıyor.
UUID 128 bit ve onaltılık olarak yazılmış olduğundan, çok kolay hızlı ve UUID saklamak için.
Öncelikle programlama dili ile tire çıkarın
110E8400E29B11D4A716446655440000
110E8400-E29B-11D4-A716-446655440000
.
Şimdi 32 karakter (bu da birlikte çalışan bir MD5 gibi).
MySQL BINARY
tek bir yana bir boyut UUİD(8*16 = 128)boyutu 8 bit.
Ekleme yapmanıza gerek yoktur.
INSERT INTO Table (FieldBin) VALUES (UNHEX("110E8400E29B11D4A716446655440000"))
ve kullanarak sorgu:
SELECT HEX(FieldBin) AS FieldBin FROM Table
Programlama dilinde şimdi, yeniden Ekle pozisyonlar 9, 14, 19 ve 24 orijinal UUID maç için de tire. Eğer bu pozisyonlar her zaman farklı ise ikinci bir alanda bilgi saklayabilirsiniz.
Tam örnek :
CREATE TABLE `test_table` (
`field_binary` BINARY( 16 ) NULL ,
PRIMARY KEY ( `field_binary` )
) ENGINE = INNODB ;
INSERT INTO `test_table` (
`field_binary`
)
VALUES (
UNHEX( '110E8400E29B11D4A716446655440000' )
);
SELECT HEX(field_binary) AS field_binary FROM `test_table`
Eğer herhangi bir onaltılık dize ile bu tekniği kullanmak isterseniz, her zaman alan uzunluğu length / 2
. Yani sha512), alan BINARY (64)
sha512) bir kodlama bu yana bir insan için 128 karakter uzunluğunda.
Sqlite blob olarak Görüntü saklamak iç...
Nasıl bir dizin özyinelemeli olarak tü...
Nasıl Ruby rastgele bir sayı almak içi...
Nasıl dikey olarak div içine bir resim...
Nasıl bir dize olarak adını aldığımda ...