2010-06-09 10 views

Odpowiedz

32

Nie, prawie zawsze jest to zły pomysł.

  • użyje więcej miejsca
  • indeksy nie wykona także
  • nie można zrobić arytmetycznej
  • danych nie jest self-walidacji ponieważ typu
  • generatory auto-da modelowe ciąg znaków zamiast numerycznych
  • agregatów takich jak SUM nie będzie już działać
  • dane wyjściowe mogą sortować niepoprawnie
  • trzeba będzie CAST użyć go jako liczby, powodując wydajność hit
  • itp
0

Nie będzie można wykonywać obliczeń z kolumnami zadeklarowanymi jako varchar, więc należy używać typów liczbowych. A ponieważ twoje zapytanie SQL jest ciągiem, MySQL wykonuje całą konwersję (nie oznacza to oczywiście, że nie musisz sprawdzać poprawności wartości podanych przez użytkownika).

1

myślę jest ok do przechowywania numerów jak varchar, tak długo, jak nie chcesz, aby Calcs z to.

Na przykład numer telefonu lub kody pocztowe lepiej przechowywać w polach Varchar, ponieważ można je sformatować.

+0

Chciałbym przechowywać rzeczy takie jak numery telefonów i tylko takie rzeczy, jak numery telefonów, jako varchar, ponieważ tak naprawdę nie są to liczby jako takie. Nie robisz matematyki na numerach telefonów. Jednak przy podejmowaniu decyzji o typach pól typów wroga, zawsze powinieneś domyślnie używać typów liczbowych w stosunku do varchara, chyba że możesz wymyślić dobry powód, by nie dlatego, że przechodzenie z varchar do numerycznego jest o wiele trudniejsze niż na odwrót. – GordonM

3

Możesz przechowywać wiodące zera w varcharze, którego nie możesz zrobić za pomocą kolumn całkowitych (np. Możliwa jest różnica między 123 i 0000123). Na przykład kody pocztowe w niektórych krajach. Jeśli jednak musisz to zrobić, to naprawdę masz do czynienia z informacjami tekstowymi, które powinny mieć kolumnę varchar. Na przykład numery telefonów lub kody pocztowe powinny z pewnością przejść do kolumny varchar.

W przeciwnym razie, jeśli używasz danych takich jak liczby (dodawanie ich razem, porównywanie itp.), Powinieneś umieścić je w kolumnie całkowitej. Zajmują znacznie mniej miejsca i są szybsze w użyciu.

+0

Problem z zerami również może być wadą. Niedawno natknąłem się na sytuację w projekcie, w którym ze względu na sposób obsługi kodu Java jedna tabela miała wiodące zera, a druga nie. To utrudniło wykonywanie złączeń w tej kolumnie. Dane były liczbą i prawdopodobnie powinny być przechowywane jako takie, a nie jako varchar. – xdhmoore

Powiązane problemy