2013-03-14 21 views
15

Ich bin auf der Suche nach einem Rat über die beste Möglichkeit, lange Datenstrings von den mySQL-Experten zu speichern.MySQL besten Weg, lange Zeichenfolgen zu speichern

Ich habe eine allgemeine Tabelle, die verwendet wird, um jede Art von Daten zu speichern, mit denen ich meine, dass es in der Lage sein soll, alphanumerische und numerische Daten zu halten. Derzeit ist die Tabellenstruktur einfach mit einer ID und die in einer einzigen Spalte gespeichert Ist-Daten wie folgt:

id INT(11) 
data VARCHAR(128) 

ich jetzt eine Anforderung haben eine größere Menge an Daten zu speichern (bis zu 500 Zeichen) und bin frage mich, ob der beste Weg wäre, einfach die Größe der varchar-Spalte zu erhöhen, oder ob ich eine neue Spalte (eine TEXT-Spalte?) für die Zeiten hinzufügen sollte, die ich brauche, um längere Strings zu speichern.

Wenn irgendwelche Experten gibt es einen Rat, ich bin ganz Ohr! Meine bevorzugte Methode wäre einfach die Varchar-Spalte zu erhöhen, aber das liegt daran, dass ich faul bin. Die mySQL-Version, die ich ausführe, ist 5.0.77.

Ich sollte erwähnen, die neue 500-Zeichen-Anforderung wird nur für den ungeraden Datensatz sein; Die meisten Datensätze in der Tabelle werden nicht länger als 50 Zeichen sein. Ich dachte, ich wäre zukunftssicher, indem ich die Kolumne 128 mache. Zeigt, wie viel ich wusste!

+1

Verwenden Sie den Longtext-Datentyp .. – Dhinakar

+0

Was möchten Sie erreichen? – sectus

+0

Es ist wirklich wichtig zu wissen, was Sie mit diesen Daten tun wollen, manipulieren Sie es in irgendeiner Weise mit einer Abfrage oder speichern und rufen Sie den gesamten Betrag ab? – Steve

Antwort

18

Im Allgemeinen ist dies keine Frage, die eine "richtige" Antwort hat. In MySQL gibt es keinen Textspeicher mit unbegrenzter Länge. Sie könnten LONGTEXT verwenden, aber das hat immer noch eine (absurd hohe) Obergrenze. Aber wenn Sie das tun, treten Sie Ihrem DBMS in die Zähne, weil Sie sich mit diesem absurden Kolumnen einer Kolumne für Ihren 50-stelligen Text beschäftigen müssen. Ganz zu schweigen davon, dass du damit fast nichts tust.

Also, die meisten Zukunftssicherheit (TM) wird wahrscheinlich von LONGTEXT angeboten. Aber es ist auch eine sehr schlechte Methode, das Problem zu lösen. Ehrlich gesagt, würde ich die Anwendungsanforderungen erneut prüfen. Das Speichern von Strings ohne "Domäne" (wie in ihrer Anwendung wohldefiniert) und beliebiger Länge ist keine der Stärken von RDBMS.

Wenn ich dies auf der Ebene "Anwendungsdesign" lösen möchte, würde ich NoSQL Schlüssel-Wert-Speicher für diese verwenden (und ich bin als Anti-NoSQL-Hype wie sie bekommen, so dass Sie es wissen ernst), obwohl ich erkenne, dass es eine ziemlich teure Änderung für solch eine kleine Änderung ist. Aber wenn dies ein Hinweis darauf ist, was Ihr DBMS letztendlich halten wird, könnte es sinnvoller sein, jetzt zu wechseln, um dieses gleiche Problem in Zukunft hundertmal zu vermeiden. Die Datendomäne ist in RDBMS sehr wichtig, während sie in nicht relationalen Lösungen explizit nicht berücksichtigt wird. Dies scheint das zu sein, was Sie hier zu lösen versuchen.

Stuck mit MySQL? Erhöhen Sie es einfach auf VARCHAR(1000). Wenn Sie keine Anforderungen an Ihre Daten haben, ist es egal, was Sie tun.

+0

Nur eine Anmerkung, dass, wenn es nur 500 Zeichen ist, 'TEXT' gut funktioniert. –

+1

'TEXT' ist sowohl für" nur "500 Zeichen schwer zu verwenden, noch weiß das OP, ob 500 die obere Grenze ist.Die Antwort hängt davon ab, ob Sie MyISAM oder InnoDB verwenden, aber für Spalten, in denen der Text schnell zugänglich ist, ist 'VARCHAR' schneller, da es Daten inline speichert (InnoDB speichert' TEXT' auch bis zur Zeilenlänge, 2^16). Also, hängt von der Anwendung ab, aber "TEXT" ist immer nur dann besser, wenn man die Spaltenlänge nicht stabil begrenzen kann. – Naltharial

+0

Einverstanden, @Naltharial. Ich wollte nur sicherstellen, dass die Vorschläge von 'LONGTEXT' nicht der einzige Verweis auf' TEXT' sind - anstelle von 'LONGTEXT' wird' TEXT' wahrscheinlich eher im Bereich der wahrscheinlichen Lösung für OP sein, obwohl die wahre Lösung darin besteht hoffentlich die Anforderungen verschärfen. –

Verwandte Themen