0

150個の異なる小さな整数値(0から7の範囲)をMySQLデータベーステーブルの行に格納する必要があります。SELECT、INSERT、またはUPDATEが発生するたびに、これらすべてが一緒に読み書きされます。テーブルはほとんど更新され、1つの挿入があり、次に行に約1000の更新があります。DELETESとSELECTSは、たとえあったとしても、実際にはめったに発生しません。

パフォーマンスに関しては、150個のtinyint列を使用する方が良いですか、それともvarchar(300)を使用する方が良いですか?

私の主な関心事は、結果セットが準備されるときにMySQLが150の列定義を処理するのにかかる時間と、キャッシュされた場合に2倍のRAMを必要とする2倍のサイズです。数十万の行があると予想されるため、パフォーマンスの各ビットが重要になります。

4

1 に答える 1

2

それらを1バイトに1つずつBINARY列に格納します。データセットは、150b * 500k=75Mbのメモリに簡単に収まる必要があります。バイト配列の後処理のオーバーヘッドは、クエリと選択の列を操作するdbのオーバーヘッドよりも大きくなるとは思いません。INSERTとUPDATEは、構築が醜いだけでなく、DBからの解析に時間がかかります。違いはおそらくミリ秒の範囲にあるので、アプリケーション側でデコードするのに意味のあることをします。

于 2012-05-23T01:13:45.737 に答える