Qual è una buona struttura dati per memorizzare i numeri di telefono nei campi del database? Sto cercando qualcosa che sia abbastanza flessibile da gestire i numeri internazionali e anche qualcosa che consenta di interrogare le varie parti del numero in modo efficiente.
Modifica: solo per chiarire il caso d'uso qui: attualmente memorizzo i numeri in un singolo campo varchar e li lascio proprio come il cliente li ha inseriti. Quindi, quando il numero è richiesto dal codice, lo normalizzo. Il problema è che se voglio interrogare alcuni milioni di righe per trovare numeri di telefono corrispondenti, coinvolge una funzione, come
where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)
che è terribilmente inefficiente. Anche le query che cercano cose come il prefisso diventano estremamente complicate quando è solo un singolo campo varchar.
[Modificare]
Le persone hanno dato molti buoni suggerimenti qui, grazie! Come aggiornamento, ecco cosa sto facendo ora: memorizzo ancora i numeri esattamente come sono stati inseriti, in un campo varchar, ma invece di normalizzare le cose in fase di query, ho un trigger che fa tutto ciò che funziona quando i record vengono inseriti o aggiornato. Quindi ho int o bigint per tutte le parti che devo interrogare e quei campi sono indicizzati per rendere le query più veloci.