質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

89.19%

ブログサイトを作る時、mysqlは、varchar型、text型、あるいは、どのようにしますか?

解決済

回答 6

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 4,116

kyabetsu

score -11

mysqlの知識については、レコードを削除、更新程度、PHPとの連動・・。
は出来る程度で、チューニング等については全く知識が無く、
専門的な用語については理解すら出来ないかもしれないド素人と言ってよいです、

windows7のローカル環境xamppを使って実験していますが、
そちらでの実験がある程度終われば、centOSや、レンタルサーバー等に以降しようと考えているので、
それらを踏まえて、タグ付けを行いました。

といった環境の中、ブログの簡易システムを作成しているのですが、行き詰ってしまいました。

まず、人気のブログサイト等を調べてみると、文字数が2000文字程度だったり、
5000文字、そして、10000文字程度なんていうのも、ザラにあるようでした、

と、いうことはDB(mysql(mariaDB))の方は、varchar(10000)とでも、しておくべきでしょうか?。

あるいは、text型を使うべきでしょうか?。

あるいは、一つのテーブルの中に、varchar(3000),varchar(6000)varchar(10000)、
と、それぞれの長さに対応したカラムを作成して、記事の長さによって」、格納場所を分けるべきでしょうか?。

あるいは、テーブル毎分けてしまったほうがよいのでしょうか?。
それとも、他になにか方法があったりするのでしょうか?。

varchar(10000)や、varchar(5000)という単位を指定することも、
text型を使うことも、否定的な意見が沢山あるようで、
かといって、2000~10000文字の記事をランダムに投稿する場合はどうする・。
といった、具体的な答えを探すこともできませんでした。

2000~10000文字の記事を、毎日ランダムに格納することを想定した場合。
varchar型、text型、カラムを分けて作るか、テーブルは分けるかどうか、

アクセス(表示)速度や、今後の管理のし易さ等も踏まえて、

適切な方法をご存知の型がいらっしゃいましたら、
是非ともご回答宜しくお願い致します。

//以下は補足です
文章を入力、送信したら、タグの挿入、テンプレートとの結合etc・・、
HTMLページを自動で生成する、といった入力フォームを作成したので、

DBはどのように運用するか、迷っている状態です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kyabetsu

    2018/07/16 17:15

    間違えて自己解決フォームに書いてしまいました、すみません。

    キャンセル

  • kyabetsu

    2018/07/16 17:19

    質問を編集するボタンから、どのよう質問の答えが落ち着いたのか、記入しました。

    キャンセル

  • kyabetsu

    2018/07/17 00:18

    しました。

    キャンセル

  • 退会済みユーザー

    2019/11/27 13:41

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 6

+7

まず、「カラムやテーブルを分けて作る」という選択肢は、よほど特殊な事情がない限り、いちばんありえない範疇のものです。同じ意味合いのものを別な列に分けて入れてしまえば、あとあと処理が煩雑になるだけで、きわめてハンドリングしづらいデータベースとなります。

そして、MySQLでInnoDBを使う場合(最近はデフォルトでInnoDBになっています)は、VARCHARでもTEXTでも、保存した分以上の容量は取りません。

  • 65536文字以上になる場合はVARCHARにできないので、MEDIUMTEXTしか選択肢がありません。
  • それ以下でも、MySQLのバージョンや設定によっては、TEXTの中身を除いて1行あたり65536バイトまでという制限があるので、VARCHARでは入らないことがあります。

varchar(10000)や、varchar(5000)という単位を指定することも、
text型を使うことも、否定的な意見が沢山あるようで、

こちらですが、どのような理由での意見なのかをよく確認しましょう。たとえば「MYISAMの特性」であればInnoDBを使う分には無関係ですし、「TEXTにはインデックスを付けるのに手間がかかる」というのも、記事本文に対して先頭一致のインデックスは通常付与しないので、気にしなくて構いません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/16 09:37

    君の性格は粘着質?。

    YES?、NO?。

    この回答は興味あるから読むかも(笑)

    キャンセル

  • 2018/07/16 11:24

    この回答には興味ありますが、あなたに興味は無いです^^;
    この回答を追いかけてみましたが、あなたが得ることができなかった情報は以下のようです。

    ・DBMS の version と ストレージエンジンによる制限
    ・型選択の際、考慮すべき要件
    ・逆に、要件から制限される型

    調べてる途中で、マルチ投稿見つけたり、全文検索に興味が移って思ってた以上に時間を使ってしまいました。
    いつもなら、調査結果を回答としてまとめるのですが、ちょっと時間が足りないため、今回は放置します。
    興味があれば、調べてみると面白いです。

    キャンセル

  • 2018/07/16 17:11

    長い・・。

    やっぱ読むのやめよう。

    結構しつこいけど、読んでくれてると信じてるんだろうか・・。
    キモ。。

    キャンセル

checkベストアンサー

+4

まず、人気のブログサイト等を調べてみると、文字数が2000文字程度だったり、
5000文字、そして、10000文字程度なんていうのも、ザラにあるようでした、

無限と言う設定は実際は存在しないので(HDDやメモリなどハード的な理由で制限が必ずかかる。)作成するシステム仕様にあったDB設計をする必要があると思いますよ。

シェアが多いwordpressを参考にするとbestではなくてもbetterになるかと。

ちなみに、記事はtextを使用しているようです。

MariaDB [hogehoge]> desc wp_posts;
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field                 | Type                | Null | Key | Default             | Extra          |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID                    | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| post_author           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| post_date             | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_date_gmt         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_content          | longtext            | NO   |     | NULL                |                |
| post_title            | text                | NO   |     | NULL                |                |
| post_excerpt          | text                | NO   |     | NULL                |                |
| post_status           | varchar(20)         | NO   |     | publish             |                |
| comment_status        | varchar(20)         | NO   |     | open                |                |
| ping_status           | varchar(20)         | NO   |     | open                |                |

https://wpdocs.osdn.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%A7%8B%E9%80%A0#Table:_wp_postmeta

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/15 21:24

    なるほど、wordpressという、既に存在する、
    フリー配布さrている媒体を、参考にするという手段があったのですね。

    考え方としても、とても参考になりました、
    これからも精進するよう心がけます、

    ご回答ありがとうございました。

    キャンセル

+4

今だから言える、

「どうすれば適切ですか?」じゃなく、「おまえがどうしたいか?」だけどねー!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/15 23:06

    いいこと言うね〜

    キャンセル

  • 2018/07/16 07:16

    一対一ならね、これはこう、これはこう、
    で、終れるんだけど、

    こうやって触発される人たちが出てくると、
    色んな意見に回答しなきゃならんハメになる。

    どうせ一人目への答えが気に障ったから絡んできてるんだよね?。
    次から次へと相手にしなきゃならん俺の立場もわからんかね?。

    質問内容に答えてるならともかく、そうじゃないからめんどーー。

    お前に判るように説明するのもめんどい、
    お前にとっては一人目でも、俺にとっては三人目なんだよ(四人目かな?)、うぜーー

    まぁ、俺もお前と同じ「言いたがり」だから、こうやってわざわざ返信してるんだけど、
    もうこの質問に回答者が現れなければ、これ以上嬉しいことはない。

    キャンセル

  • 2018/07/16 10:57

    >次から次へと相手にしなきゃならん俺の立場もわからんかね?。

    ま っ た く わ か ら ん。

    キャンセル

0

MySQLについて参考にさせてもらっているサイトはこちらですね。

http://nippondanji.blogspot.com/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/15 21:25

    しっかりと勉強して、精進したいと思います。

    親切にURLを教えて下さって、ありがとうございました。

    キャンセル

  • 2018/07/15 22:04

    ついた回答に噛み付くくらいなら、QAサイト使わないほうがいいよ。

    キャンセル

  • 2018/07/16 07:21

    あなたとの会話に関係ない話を、あなたとするつもりはありません。
    さいなら。

    キャンセル

-1

こんなゴミみたいな質問者初めて見た
オラおでれえたぞ

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-12

wordpress等、既存に存在するサイトを参考にすることにしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/16 17:18

    記事を編集するつもりが、間違えました。

    キャンセル

  • 2018/07/16 20:40

    普通、間違えるか? どういう頭の構造してんだ?

    キャンセル

  • 2018/07/16 22:36

    まぁ、そう言いたい空気だよね。

    弱み見つけられてヨカッタネ。

    キャンセル

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

  • ただいまの回答率 89.19%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる