bin grad auf die frage gestossen, "macht es sinn eine innodb table, die einen mix aus int und varchar/text spalten besteht, aufzuteilen in eine innodb table die nur int beinhaltet und über die die primären suchvorgänge laufen und in eine innodb table die die restlichen carchar/textspalten besitzt ?" und konnte sie nicht wirklich beantworten. deswegen schieb ich sie einfach mal hier weiter.
Mysql innodb tabellen trennen
Wenn du sehr viele Ints hast, auf die du sonst einen Index legen müsstest, dann hängt es von dem Verhältnis an Schreiboperationen ab. So ein Join mit Primärindex ist eigentlich recht fix. Es spricht nur dagegen, dass du damit die Normalisierung aufweichst.
Von welchen Datenmengen reden wir denn da? 100 Datensätze, 10000, oder gar in die Millionen?
Wenn nicht letzeres: Nimm eine Tabelle.
ok mal ein wenig präzisieren. gibt es bei der innodb den selbern effekt wie bei myisam, wo starre tables schneller sind als dyamische ?
mal unabhähgig von der grösse oder sonstigen. rein theoretisch bzw von der engine her
Bei InnoDB gibt es die Unterscheidung wie bei MyISAM nicht. Eine Trennung halte ich daher nicht für nötig. Durch das Row-Locking müsste auch der Performance Nachteil von größeren Tabellen mit vielen Schreibzugriffen wegfallen, welche bei MyISAM deutlich spürbar sind.
Da ich hauptsächlich mit MyISAM arbeite, kann ich aber keine sichere Empfehlung für InnoDB abgeben. Bei MyISAM würde eine Trennung in jedem Fall Sinn machen.
Andere Frage: nutzt du ausschliesslich Innodb? In dem Fall könnte man andenken, die DB gegen eine PostgreSQL auszutauschen. Die ist an sich nicht nur von der Lizenz her schöner als MySql. Vom Start her hat PostgreSQL einen schlankeren Fuss und skaliert besser, wenn ein nennenswerter Anteil an Updates und Inserts anliegt.
Sobald die Schreibzugriffe zunehmen und du nicht mehr mit isam table locking arbeitest, hat mysql eigentlich nur noch den Vorteil, dass der Name so schön freundlich einfach klingt (my).
my2pesos