🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

399閲覧

MySQLにて、tinyintを使うべきカラムにbigintを指定した場合、どのような問題が発生しますか?

raise_a_hand

総合スコア26

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2019/12/22 04:02

仮に、1~10程度までしか入らないような、tinyintで十分なカラムがあったとします。
このカラムにbigintを指定した場合、具体的にはどのような問題が発生するのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Orlofskyさんの回答以外の点の補足です。

「不正データが入った時のリスク」以外の観点ですと、DB上で確保するストレージ量が変わります。

参考:
https://dev.mysql.com/doc/refman/5.6/ja/integer-types.html

→tinyintだと1バイトですが、bigintだと8バイトになります(実際に登録されている数値が「3」等の「1バイトで表せる値」だったとしても、bigint型だと8バイト必要です)。

特に、データ量が厳しい環境の場合は(大量のデータを保持するテーブルのカラムだったり、逆に、DB自体の容量が少ない、など)、必要十分な設定にしておいたほうが、無駄はなくなります。

投稿2019/12/25 04:43

nak

総合スコア696

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

tinyint なら桁あふれでエラーになるべきデータが間違って入ってきても、bigint にしていたためエラーが発覚せずに、後日データの修復ができなくなってからバグが発覚するかも?もしくはバグに気が付かないまま歳月が過ぎるとか?

テーブル設計の段階でテーブル設計書を用意するはずですから、MySQL ALTER TABLE の例 でテーブル設計書に合わせましょう。

投稿2019/12/22 05:23

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問