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.
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
ID das wirklich ein Maß für Spalten oder nur Speicher? –
@Dagon nur Speicher wirklich. Ich weiß nicht, ob die Anzahl der Spalten begrenzt ist. – Liam