
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文字分の容量しか消費しないのでしょうか?
後者だとしたら、文字数を設定する意味ってなんだろ・・?
とりあえずデカくしといたらオッケーなのかな・・?
・・と、いう風に考えたのですが、
そうすることによって、どういった不都合が生じますか?。
ご存知の方がいらっしゃいましたら、
ご回答お待ちしております、宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
varchar、textは可変長です。
255なら、255バイトまたは255文字まで格納できます。
格納できる文字数は文字エンコーディングに依存します。
消費容量は格納された文字数に依存します。
パフォーマンについては既に回答がありますね。
varchar型にすることと、登録できるレコード数は直接的に関係はありません。
関係あるのはストレージ容量です。
格納される文字数の上限がはっきりしない項目の場合、textを使います。
つまり、文字数が決まっている記事タイトルのようなものはvarchar、文字数が決まっていない記事内容のようなものはtextだったりします。
勿論、それはシステムを設計する段階で、必ずそうであるとは限りません。
>文字数が決まっている記事タイトルのようなものはvarchar、文字数が決まっていない記事内容のようなものはtextだったりします。
こちららの情報は、とても参考になり得るご意見であり、
>必ずそうであるとは限りません。
と、いう文言も頂いているので、少し不安は残るのですが、
その不安は、本質問から少しズレてしまい、それを聞くことは失礼に当たるので、控えます。
>varchar型にすることと、登録できるレコード数は直接的に関係はありません。
関係あるのはストレージ容量です。
>消費容量は格納された文字数に依存します。
これらの言葉が、今回の質問内容に対して、とても的確な回答だと感じました。
親身なご意見で、とても助かりました、
ご回答ありがとうございました。
No.1
- 回答日時:
文字列型の長さchar型は確保する文字数、varcharは許容される上限文字数です
(DBやエンジンによってはバイト数の場合もあります)
長さを長くすると汎用性はあがりますがストレージやメモリへの負担になります
つまりは検索効率が落ちて低速になるということです
varcharは比較的長さの影響を受けづらいものですが、
カリカリにチューニングをしたい場合などはきっちりした設計で
テストを繰り返して適切な長さを決める必要があります
ご回答ありがとうございます。
ネットのトラブルにより、サイトを確認出来ていませんでした。
お礼が遅くなってしまい、申し訳ありません。
長さが長くなれば、低速になる等の影響を受けることが理解出来たので、とても助かりました。
質問本文にて、
>1000文字まで入力できる。
と設定すると、その時点で、1000文字の容量を消費するのでしょうか?。
あるいは、1000文字まで入力できると設定したとしても、
600文字しか打たなかったら、600文字分の容量しか消費しないのでしょうか?
と、記載した部分なのですが、
例えば、10000文字を格納出来るとして、
1000文字が上限と指定すると、その時点で残り10件のデータしか格納できないのでしょうか?、
あるいは、1000文字が上限と指定したとしても、実際の中身が100文字だったら、100件のデータが格納出来るのでしょうか?
素人なりに、聞きたいことを文字に起こしてみたので、
飛躍しすぎていたり、判り辛かったら申し訳ないのですが、
宜しければ、その一点について、教えて頂けると、とても嬉しいです、
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL テーブル作成時のカラムについて 2 2022/08/27 21:48
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- WordPress(ワードプレス) Wordpressの記事URLを自由に決めたい 3 2022/06/02 12:05
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- 大学受験 小論文の採点について質問です。 先日、推薦入試があり第一志望校の入学試験を受けてきました。 試験内容 2 2022/11/28 17:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLのDATEタイプ
-
MySQLのDBIでは、サイズで制限...
-
オラクルのDATE型について
-
オラクルのデータ型・通貨について
-
Excel VBA SelectedItems
-
MySQLで日時データをdatetime型...
-
postgreSQLをmySQLに変えたい
-
ヌル値は記憶容量を必要としな...
-
パスワードを忘れてしまいました
-
初心者にもなってませんが・・。
-
データベースを移動したい
-
COUNT(*)の使い方
-
MySQLバージョンアップの問題点
-
mysqlの文字につて教えてください
-
utf8に設定すると起動できません
-
mysqlでdate型の比較について
-
Mobavle type 文字化け
-
phpMyAdminの最新版について
-
MySQLのコンパイル
-
PHP+MySQL 4.1.20における文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで変数内に保持された二次配...
-
SQLのVARCHARとVARCHAR2の違い
-
INT型は金額の型に使用するべき...
-
Excel VBA SelectedItems
-
postgreSQLのデータ型
-
プライマリーキーの昇順でソー...
-
Float型の時の計算結果がおかしい
-
オラクルのデータ型・通貨について
-
mysql(mariaDB)の格納文字数は...
-
カラムの長さを指定する意味に...
-
ヌル値は記憶容量を必要としな...
-
ハングル文字が入らない。
-
AccessからOrcleのODBCリンクテ...
-
MysqlにURLを登録する方法
-
MySQLで先頭の0が省略されてし...
-
経過時間(hhmmdd)をDATE型には...
-
select文でのデータの取り出し方法
-
MySQLの型のサイズ指定で速度は...
-
DB2 INSERT時の格納順序
-
MySQL TIMESTAMP型は、UTCですか?
おすすめ情報