
PHPを勉強中で、入門書をつまづきながら読むくらいのレベルの者です。
例えば、PHP+MySQLでブログのようなシステムを作るとしたとき、本文にあたる短ければ数百字、長くて数千字のテキストを扱う場合にどのような方法をとればいいのか悩んでいます。
1. テキストファイルとして保存してデータベースにファイル名を保存し、ファイル名からPHPのテキストファイルを読み込む関数で読み込む
2. TEXT型(あるいはVARCHAR型?)でそのままデータベースに保存する
の2つの方法のいずれかを考えており、
テキストの利用方法として、
1. そのままHTMLに出力して表示する。その際、データベースの同じテーブルに入っている記事タイトルなどのデータも利用する。
2. 複数ファイルから特定の文字列を含むもののみを選び出す(行番号などの情報は不要)。この際は他のデータは利用せず、例えば記事IDのようなものの配列が得られればよい。
のことをしたいと思っており、
また、その他の条件として
1. 動作が高速な方がいい(特に複数ファイルからの検索)
2. 直接テキストファイルのURLを指定して内容を読まれても、まあOK
3. 最大文字数は多分8000字程度で固定(書き込み時にチェック)
を考えております。
総合的に考えてどちらの方法が優れているでしょうか? また、それぞれの方法で知っておいた方がいい制限事項などはありますか? 特に、正直なところVARCHAR型、TEXT型がどのようなアクセス速度など特徴を持つのかをまったく分かっていません。
ご教授宜しくお願いします。

No.2ベストアンサー
- 回答日時:
基本的にデータベースの処理速度(検索速度)は、レコード数に比例しますので、VARCHAR型かTEXT型かでの違いはほとんどありません。
文字列が数百から数千とあるので、普通にVARCHAR型でいいかと思います。
TEXT型にするのは、固定長であることに意味がある時で、また日本語(漢字)などを扱う場合には何かとVARCHAR型の方が便利なようです。
回答ありがとうございました。今回は、とりあえずテキストファイルで作ってみようかと思いますが、TEXTとVARCHARの違いについて納得できる説明をいただけたのでベストアンサーにさせていただきました。
No.1
- 回答日時:
数千字程度の少量データであれば、どのような方法をとっても処理時間的には差が出ませんので、自分のやってみたい方法でやればいいかと思います。
勉強目的であれば、いろいろな処理方法を全部トライしてみるのが良いかと。
ありがとうございました。どちらの方法でもあまり差はないのか?というところもほしい情報だったので助かりました。今回は用途からテキストファイルに最初に挑戦してみようかと思います。
今後これを見た方のためにそれを選んだ理由を挙げておくと、
・PHPのread関数でフォルダ内のファイルのリストを取得でき、テキストファイル名を配列として取得するのは容易
・テキストファイルの検索も比較的楽そう
・VARCHAR型のデータ呼び出しで255文字までしか受け取れない(VARCHAR型の問題ではないらしいが)らしいという情報があり、その解決方法がよく分からない
・ファイルとして扱えるので編集が楽
というのが理由で、
1. 全テキストファイルを検索して語を含むファイル名のみを得る
2. ファイル名にレコードIDを含めておき、語を含むファイルIDの配列を作成する
3. IDの配列についてSQLでレコードを参照し、その他の情報を取り出す
という方法でデータの取り出しを行おうと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQL4.1系でPHPが文字化けして...
-
あるDBから別のDBのテーブルをs...
-
SQLServerのselect文でデータ数...
-
ユーザにインフォメーション ス...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
複数行をINSERTで『ORA-00911: ...
-
create databaseがうまくいきま...
-
mysqlにおけるホストのパーセン...
-
ODBCを使用する場合のファイルD...
-
複数のCSVファイルの読みこみ
-
SQL*Loaderでのデータロード
-
wordpressがインストールできな...
-
badファイルの内容を知る方法
-
同じSQL文で極端に検索が遅くな...
-
数字で「そ」と「り」
-
行ごとにアクセス権限
-
sql*loader 数値のロード
-
ダンプファイルから特定のテー...
-
SQLデータベースへのリンクがあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるDBから別のDBのテーブルをs...
-
utf8bomとutf8mb4の違いがいま...
-
MySQL4.1系でPHPが文字化けして...
-
SQLServerのselect文でデータ数...
-
バッチファイルではパスワード...
-
html上でMySQLにアクセス(Java...
-
Mysqlのデータベースのリンク
-
phpmyAdminでmySQLのdumpデータ...
-
「utf8mb4_general_ci」はMAMP...
-
Amazon.comの「MARC」データベ...
-
mySQLのデータベースにhtmlのコ...
-
mysqlデータベース内のuserテー...
-
どの程度のデータベースなら、c...
-
MySQL4.1以上で、機種依存文字...
-
複数のサーバー間の各データベ...
-
データベースのパンク
-
2ちゃんねるレベルの巨大掲示板
-
phpMyAdminでエクスポートとイ...
-
サイト同時でユーザー共有方法
-
データベースから値を取得して...
おすすめ情報