SORU
8 HAZİRAN 2012, Cuma


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
8 HAZİRAN 2012, Cuma


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009