💾
DBのデータ型
文字列の型
-
CHAR
- メモリのサイズは固定
- char 3 のとき、カラムに入るデータが「A」だけでもメモリ的には [ A | | ] 分の箱を確保している
-
VERCHAR
- ver : 変数のver、『変われるよ』ということ
- varchar 3 のとき、カラムに入るデータが「A」だけなら [ A ]] になる。「ABC」なら [ A | B | C ]] になる。
- メモリは可変だが、いつもおしりに『これはメモリサイズが変わる可能性があるよ』ということを持っている( []] の ] )
-
TEXT
- 非常に量の多いstringを入れる
varchar 1000 , text のカラムにそれぞれ1000文字のデータを入れたとき、
そこから「あ」という文字を検索するのにかかる時間は... varcharの方が早い!
数値の型
※数値はmysqlのもの
-
TINYINT
- -128 ~ 127 までの値を入れられる
- 128 を入れようとするとエラーになる(OVER FLOW)
-
SMALLINT
- -32768 ~ 32767 (65535) 約3万 / 約6.5万
-
MEDIUMINT
- -8388608 ~ 8388607 (16777215) 約800万 / 約1600万
-
INT
- -2147483648 ~ 2147483647 (4294967295) 約21億 / 約43億
-
BIGINT
- 2の64乗
これらに UNSIGNED を付けると、負の数が許容されなくなり、正の数の上限が上がる
(UN : なし, SIGN : 符号(プラスやマイナスの記号), SIGNED : 符号付きの)
例)TINYINTにUNSIGNEDを付ける : -128 ~ 127 → 0 ~ 255 (255 : 2の8乗-1)
MYSql の場合:https://dev.mysql.com/doc/refman/8.0/ja/integer-types.html
- decimal : 小数点以下まで管理できる
- Decimal(3.2) → すべての桁数:3、小数点以下の桁数:2
- 例)5を入れる → 5.00 、 10を入れる → エラー(?)整数部分は1桁しか入らないため
日付の型
- DATA
- YYYY-MM-DD
- DATATIME
- YYYY-MM-DD HH-mm-ss
DB設計について
DBにデータを持つ時、、
- 絶対に小さいならtinyint
- あいまいならint
今は性能がいいのでカラムのデータの大きさを無理に削る必要はない
おまけ
-
DBA
DBのプロのこと
tunningのようなパフォーマンスの向上はもちろん、ハードウェアのことまで熟知している -
DB は ms(ミリ秒)の世界
1秒 = 1000ms これはDBの世界では遅い
検索時間が1.05秒から1.00秒になるのも立派なtunningになる -
tunning チューニング
DBのパフォーマンスを向上させること
例)SQL文を修正して検索スピードを上げる、テーブル構成を編集する、カラムのデータ型を変える -
ORM
BEから書いたコードを、自動的に各DBのSQLの文法に翻訳してくれる
→ 実装後にDBが変わったり、1つのプロジェクトで複数種類のDBを扱う必要がある場合に便利
Discussion