Czy obejmuje to:
- Numery międzynarodowe?
- Rozszerzenia?
- Inne informacje oprócz rzeczywistej liczby (np. „poproś o Bobby”)?
Jeśli wszystkie z nich są nie, użyłbym pola o wartości 10 znaków i wyrzuciłby wszystkie dane nieliczbowe. Jeśli pierwszy to tak, a pozostałe dwa to nie, użyłbym dwóch pól varchar (50), jednego dla oryginalnych danych wejściowych i jednego z wszystkimi nienumerycznymi danymi rozłożonymi i używanymi do indeksowania. Jeśli 2 lub 3 są tak, myślę, że zrobiłbym dwa pola i jakiś szalony parser, aby określić, co jest rozszerzeniem lub innymi danymi i odpowiednio sobie z tym poradzić. Oczywiście możesz uniknąć drugiej kolumny, robiąc coś z indeksem, w którym usuwa on dodatkowe znaki podczas tworzenia indeksu, ale ja po prostu utworzyłbym drugą kolumnę i prawdopodobnie usunę znaki za pomocą wyzwalacza.
Aktualizacja:aby rozwiązać problem AJAX, może nie być tak źle, jak myślisz. Jeśli jest to realistycznie główny sposób, w jaki cokolwiek jest robione w tabeli, przechowuj tylko cyfry w drugiej kolumnie, jak powiedziałem, a następnie ustaw indeks tej kolumny jako klastrowany.