2016-12-13 24 views

答えて

-1

少なくとも4百万であるため、通常のシナリオではこのように制限されることはありません。あなたはおそらく他の制限を最初に打つでしょう。


私は長い建てのテストと、このような長いクエリを設定します。

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

私はすぐにメモリを使い果たしました。

memory_limitの設定を2048Mに増やし、400万列を正常に取得しました。

私は500万回試してみましたが、このエラーが表示されます:Got a packet bigger than 'max_allowed_packet' bytes. max_allowed_pa​​cketの設定では、送信できるクエリのサイズが制限されます。

したがって、MySQLテーブルが明らかに4096列に制限されていても、クエリは実行されません。

+1

まあ*個別*テーブルを生じてはならないsanely設計されたデータベースなどの質問には

は4096列に限定されているが、それは結合および計算列からの結果はもちろんです。つまり、PHPの内部制限は、おそらくmysqlndの整数を追跡する整数の最大値であり、少なくともmax_allowed_pa​​cket設定の影響を受けるように見えるため、mysqlのプロトコル制限はもっと複雑になります。結果セットに何百万もの列が合法的に必要な場合は、最初に解決する必要がある他の問題があると思います。 – Sammitch

+0

idこれは実際には列のメジャーかメモリだけですか? –

+0

@Dagonちょっとメモリ。列の数に制限があるかどうかわかりません。 – Liam

3

この質問をしている場合は、何か問題があります。これまで

+0

私は、sanely設計されたデータベースはこの制限に遭遇する必要はないことに同意します。私はそのようなデータベースを持っていません。それでも、質問するのは公正な質問ではありませんか?私たちがそれが決して私たちに影響を与えてはならないことがわかっている限界が高いことがわかっているときだけです。 – Liam

関連する問題