Eğer doğru MySQL sütun türlerini belirtmek gerekir?

5 Cevap php

Ben MySQL sütunları tanımlamak zaman ben genelde int, varchar (255), metin ve mantıksal için ara sıra enum kullanın. Doğru yerine sadece maksimum bırakarak daha sütun türlerini belirterek faydaları nelerdir?

Örneğin MD5 olarak kodlanmış bir şifre alanı öylesine varchar (255) üzerinden varchar (32) kullanarak bir somut performans artışı var 32 karakteri aşmayacak asla?

5 Cevap

Başına the manual, bir VARCHAR(N), belirli bir gerçek uzunluğu kadar 32 hiçbir yerden tasarruf kullanarak, 255'e kadar herhangi bir N için alan aynı miktarda alır. Ama en iyi gerçek veri gibi ne olmalıdır temsil eden bir türünü kullanarak netlik ve şema okunabilirliği bir avantajı var.

Ben Clyde ne diyor ile kabul eder, ama bir şifre senin örneğin özellikle iyi bir değildir. MD5 toplamı DAİMA 32 karakter olacağından, birçok durumda daha hızlı / daha verimli olacağını yerine VARCHAR (32) bir CHAR (32) kullanabilirsiniz.

Eğer satır boyutu sabit olabilir eğer bir büyük fayda var. Sonra endeksleme süper-hızlı. Metin için sabit sütun int gibi türleri, ve karakter (bazı boyut) kullanmak zorunda olacak.

Yine değişken satır boyutunu olacak ve masa az 100k kayıtları olacaktır varsa, optimizasyon çok hakkında endişe etmemelidir. Yerine varchar metin daha esnektir.

Veri doğrulama ile ilgili olarak, ben size iş kodu / doğrulama bu uygulamak gerektiğini düşünüyorum.

Yerine uygun bir dört veya sekiz bayt tamsayı bir bayt / iki bayt tamsayı kullanıyorsanız ayrılmaz türleri için, satırdaki yerden tasarruf edilir. Bu daha fazla satır sayfaya sığıp beri büyük miktarda veri ile masalarda somut etkileri var.

Karakter türleri için, ben gerçekten db ve kod hem de kontrol eğer bir fark ya da değil yapmak olsaydı emin değilim. Ama veritabanı tasarımcısı yazılım geliştiricisi, söyler işbölümünü düşünün "hey, insanlar bu alanda 100'den fazla karakter koymak izin vermeyin, toplam bir kaybı olacaktır". Bunu varchar ise (255) kişi de alanı atık olabilir sınırını ayarlayarak o zorlanarak ediyoruz.

Modern RDBMSs gerçekten nedeniyle sütun genişliği size bir 50 karakter sütun üzerinde 255 karakterlik bir sütun üzerinde daha iyi performans vermezler.

SQL Server, I NVarChar vb gibi benim isim, adres, koymak özen yüzden gerektiğinde ben uluslar edebilirsiniz. Ben ABD'de standart olarak 10 rakamdan fazla depolama kapasitesine sahip telefon numarası depolama var.