可能なすべての ISBNS をテーブルに格納しています。これらの isbn は常に 13 桁の長さで、常に数字です。各 ISBN は「978」または「979」で始まります。純粋にパフォーマンスの観点から、列を BIGINT (13) または CHAR (13) にする方が良いでしょうか? またその理由は? このデータをより効率的に保存する別の方法はありますか?
質問する
2459 次
3 に答える
3
私が取り組んでいる同様のプロジェクトの一環として、1M 行テーブルでテストを行っていました。
BIGINT - 0.0003 sec
Varchar(13)- 1.3996 sec
CHAR(13) - 1.2910 sec
間違いなく私はBIGINTで行くつもりです
于 2013-12-13T01:05:32.283 に答える
2
まず、BIGINT(13)
13 の意味は内部ストレージ スペースではありません。BIGINT(n)
常に 8 バイトを占有します。そして、CHAR(13)
13バイトかかります。したがって、BIGINT の方が高速です。
小さいサイズが重要な場合、私は ISBN の専門家ではありませんが、ISBN が「978」または「979」で始まる場合、残りの部分は 10 桁ですか? 次に、2つの列を作成できます。
isbn_prefix
CHAR(1)、remain_part
INT。isbn_prefix
'978' の場合は '8'、979 の場合は '9' をremain_part
格納し、10 桁を格納します。BIGINT
4 バイトしか必要としません。だから、未満BIGINT
。
でも、シンプルイズベスト。私BIGINT
があなただったら使うよ。
于 2013-11-12T02:41:37.040 に答える