2016-12-13 9 views

Antwort

-1

Es ist mindestens 4 Millionen, so ist es unwahrscheinlich, dass Sie auf diese Weise in jedem normalen Szenario begrenzt werden. Sie werden wahrscheinlich zuerst andere Grenzen treffen.


stelle ich einen Test auf, die länger und länger Abfragen wie folgt aufgebaut:

SELECT "a","a","a","a","a","a" ... 

ich schnell aus dem Speicher lief.

Ich habe die Einstellung memory_limit auf 2048M erhöht und erfolgreich 4 Millionen Spalten abgerufen.

Wenn ich 5 Millionen versuchte, habe ich diesen Fehler: Got a packet bigger than 'max_allowed_packet' bytes. Die Einstellung max_allowed_packet legt eine Größenbeschränkung für die Abfrage fest, die Sie senden können.

Also obwohl eine MySQL-Tabelle scheinbar auf 4096 Spalten beschränkt ist, sind Ihre Abfragen nicht.

+1

Gut * einzelne * Tabellen sind begrenzt auf 4096 Spalten entstehen sollte, aber das ist nichts von Ergebnissen sagen von Joins und berechneten Spalten. Das heißt, das interne Limit von PHP ist wahrscheinlich das Maximum aller Integer-Spaltennummern in mysqlnd, und das Protokolllimit von mysql ist wahrscheinlich komplizierter, da es zumindest den Einstellungen von max_allowed_packet unterliegt. All * das * sagte, wenn Sie rechtmäßig Millionen von Spalten in einer Ergebnismenge benötigen, würde ich wagen, dass Sie andere Probleme haben, die Sie zuerst lösen sollten. – Sammitch

+0

ID das wirklich ein Maß für Spalten oder nur Speicher? –

+0

@Dagon nur Speicher wirklich. Ich weiß nicht, ob die Anzahl der Spalten begrenzt ist. – Liam

3

Wenn Sie diese Frage stellen, tun Sie etwas falsch.

Für eine sanely entworfen Datenbank eine solche Frage nicht immer

+0

Ich stimme zu, dass keine vernünftig entworfene Datenbank auf dieses Limit stoßen sollte. Und ich habe keine solche Datenbank. Trotzdem, ist es nicht eine faire Frage zu stellen? Nur wenn wir wissen, dass die Grenze hoch ist, wissen wir, dass sie uns niemals betreffen sollte. – Liam

Verwandte Themen