アプリ版:「スタンプのみでお礼する」機能のリリースについて

mysqlの、テーブルを作成する時に、
カラムの長さを(255)のように、()内に指定すると思うのですが、

create table item (
id int not null primary key auto_increment,
name varchar(255),
price int,
memo text
);


↑こんな感じです↑



まず、上記の(255)を指定した場合、
「255文字を格納することができる」と考えてよいのでしょうか?



aaaa()←4文字

おおおおおおおお←8文字



・・・といった感じで、255文字格納出来ると考えて良いのでしょうか?。


その場合、「だったら、出来るだけ大きい数字を入れておけばいいのでは?」と思いました。
つまり、ブログを投稿するサイトを作成していたとします(CMSとでも言うのでしょうか・・?)
記事のタイトルに対して、20文字程度で十分なところを、1000文字に設定しておいたり、

1000文字まで入力できる。
と設定すると、その時点で、1000文字の容量を消費するのでしょうか?。
あるいは、1000文字まで入力できると設定したとしても、
600文字しか打たなかったら、600文字分の容量しか消費しないのでしょうか?

後者だとしたら、文字数を設定する意味ってなんだろ・・?
とりあえずデカくしといたらオッケーなのかな・・?


・・と、いう風に考えたのですが、
そうすることによって、どういった不都合が生じますか?。

ご存知の方がいらっしゃいましたら、
ご回答お待ちしております、宜しくお願い致します。

A 回答 (2件)

varchar、textは可変長です。


255なら、255バイトまたは255文字まで格納できます。
格納できる文字数は文字エンコーディングに依存します。
消費容量は格納された文字数に依存します。

パフォーマンについては既に回答がありますね。

varchar型にすることと、登録できるレコード数は直接的に関係はありません。
関係あるのはストレージ容量です。

格納される文字数の上限がはっきりしない項目の場合、textを使います。

つまり、文字数が決まっている記事タイトルのようなものはvarchar、文字数が決まっていない記事内容のようなものはtextだったりします。
勿論、それはシステムを設計する段階で、必ずそうであるとは限りません。
    • good
    • 0
この回答へのお礼

>文字数が決まっている記事タイトルのようなものはvarchar、文字数が決まっていない記事内容のようなものはtextだったりします。
こちららの情報は、とても参考になり得るご意見であり、

>必ずそうであるとは限りません。
と、いう文言も頂いているので、少し不安は残るのですが、
その不安は、本質問から少しズレてしまい、それを聞くことは失礼に当たるので、控えます。


>varchar型にすることと、登録できるレコード数は直接的に関係はありません。
関係あるのはストレージ容量です。


>消費容量は格納された文字数に依存します。
これらの言葉が、今回の質問内容に対して、とても的確な回答だと感じました。

親身なご意見で、とても助かりました、
ご回答ありがとうございました。

お礼日時:2018/07/15 18:47

文字列型の長さchar型は確保する文字数、varcharは許容される上限文字数です


(DBやエンジンによってはバイト数の場合もあります)
長さを長くすると汎用性はあがりますがストレージやメモリへの負担になります
つまりは検索効率が落ちて低速になるということです
varcharは比較的長さの影響を受けづらいものですが、
カリカリにチューニングをしたい場合などはきっちりした設計で
テストを繰り返して適切な長さを決める必要があります
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ネットのトラブルにより、サイトを確認出来ていませんでした。
お礼が遅くなってしまい、申し訳ありません。


長さが長くなれば、低速になる等の影響を受けることが理解出来たので、とても助かりました。
質問本文にて、

>1000文字まで入力できる。
と設定すると、その時点で、1000文字の容量を消費するのでしょうか?。
あるいは、1000文字まで入力できると設定したとしても、
600文字しか打たなかったら、600文字分の容量しか消費しないのでしょうか?


と、記載した部分なのですが、
例えば、10000文字を格納出来るとして、
1000文字が上限と指定すると、その時点で残り10件のデータしか格納できないのでしょうか?、
あるいは、1000文字が上限と指定したとしても、実際の中身が100文字だったら、100件のデータが格納出来るのでしょうか?


素人なりに、聞きたいことを文字に起こしてみたので、
飛躍しすぎていたり、判り辛かったら申し訳ないのですが、

宜しければ、その一点について、教えて頂けると、とても嬉しいです、
宜しくお願い致します。

お礼日時:2018/07/13 19:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!