Serjosha.: MySQL: Was ist effizienter?

Beitrag lesen

Hallo!

Ich bin dabei, eine MySQL DB zu entwerfen und frage mich, welche der folgenden Möglichkeiten in bezug auf Performance die bessere ist.
Die grundsätzliche Aufgabe besteht darin, verschiedene Inhalte geordnet nach Städten (Bundesländern, Bezirken) auszugeben. Die Haupttabelle wird vermutlich nicht mehr 5000 bis maximal 10000 Einträge haben.

Möglichkeit 1:
--------------

Die Ortsnamen werden direkt in die Content-Tabelle geschrieben.

select a,b,c from tbl_content where staedte_name = 'berlin'

Der Vorteil bei dieser Variante ist, dass man nur in einer Spalte suchen muss, um zu einem Ergebnis zu kommen. Der Nachteil ist, dass man den Typ "varchar" nehmen muss und die DB größer wird.

Möglichkeit 2:
--------------

Die Ortsnamen werden in eine separate Tabelle geschrieben, während die Content-Tabelle jeweils einen entsprechender Index enthält.

select a,b,c from tbl_content, tbl_staedte

where tbl_staedte.name = 'berlin'
   and tbl_content.staedte_id = tbl_staedte.id

Vorteil: hier kann man nun den Typ "int" verwenden, so dass die Tabelle kleiner wird, andererseits muss man mindestens zwei oder mehr Spalten in unterschiedlichen Tabellen miteinander vergleichen.

Das MySQL Handbuch rät ganz allgemein, möglichst kleine (effiziente) Typen zu nutzen, andererseits kostet eine Verknüpung auch Performance.

Was haltet Ihr für effektiver?

Serjosha