Telefon numaralarını veritabanı alanlarında saklamak için iyi bir veri yapısı nedir? Uluslararası numaraları işlemek için yeterince esnek ve aynı zamanda sayının çeşitli kısımlarının verimli bir şekilde sorgulanmasına izin veren bir şey arıyorum.
Düzenleme: Sadece burada kullanım örneğini açıklığa kavuşturmak için: Şu anda numaraları tek bir varchar alanında saklıyorum ve onları müşterinin girdiği gibi bırakıyorum. Daha sonra kod tarafından sayıya ihtiyaç duyulduğunda normalize ediyorum. Sorun şu ki, eşleşen telefon numaralarını bulmak için birkaç milyon satırı sorgulamak istersem, bunun gibi bir işlevi içerir.
where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)
ki bu çok verimsiz. Ayrıca alan kodu gibi şeyleri arayan sorgular, yalnızca tek bir varchar alanı olduğunda son derece zor hale gelir.
[Düzenle]
İnsanlar burada çok iyi önerilerde bulundu, teşekkürler! Bir güncelleme olarak şu anda yaptığım şey şu: Numaraları tam olarak girildikleri gibi bir varchar alanında saklıyorum, ancak her şeyi sorgu zamanında normalleştirmek yerine, kayıtlar eklendikçe tüm bunları yapan bir tetikleyicim var veya güncellendi. Bu yüzden, sorgulamam gereken herhangi bir parça için ints veya bigints var ve bu alanlar sorguların daha hızlı çalışmasını sağlamak için indeksleniyor.