2012-03-05 6 views
-4

私のデータベースには、1000冊以上の本があり、平均的な本は約100ページ(多かれ少なかれ)です。私は思っている:本などのデータを保存する方法は?

  • 各書籍を1つのフィールドに保存することはできますか?以下のような:bookContentは全体の書籍の内容になります

    INSERT INTO bookContent VALUE("book contents from first page to end..."); 
    

  • もしそれらをMySQLに保存するのが良いと思われない場合は、何が最善の方法ですか?はい、しかしため、データのほとんどの種類の最大の長さの短いで
+3

情報に基づいた回答を提供するために何をしようとしているかについて、さらに詳しい情報が必要です。 –

+0

正確に「MySQLセル」とは何ですか? –

+0

彼が投稿したクエリに基づいて、私は 'セル'は1つの行を意味すると思います。 – Corubba

答えて

0

あなたは最高のあなたがそれに到達することはありません非常に高いのでBLOBなどのバイナリデータ型を使用する必要があります。(ほとんどの場合)

特殊文字を処理するには、mysql_real_escape_string() のような関数で文字列をエスケープする必要があります。私は歌詞を保存していたし、エラーを防ぐために文字列をエスケープしなければならなかった。

in perl $connect->quote("book contents from first page to end..."); テーブルに値を挿入しようとする前。

単体で本全体を挿入することは賢明ではありません。一意のブック番号フィールドが少なくとも1つ必要です。必要に応じて、作成者、タイトル、発行者などの別のテーブルを持つことができます。テーブルや他のテーブルに他のフィールドがない場合、特定の書籍だけを簡単に照会することができます。

シャーロック・ホームズのすべての本を見たいと思っています....それは簡単ではありません。データベースは "Sherlock Holmes"のためにすべての本の内容を検索しなければならないので、信じられないほど遅く実行されます。

今、あなたのテーブルには、これらのクエリが速く、このクエリよりも桁違いに実行されます、その後

select * from book where author="Sir Aurthur Conan Doyle"; 
select * from book where title="Sherlock Holmes"; 

著者、出版社、タイトル、およびなどを持っている場合。キロやメガにおける各書籍の実際のサイズに応じて

SELECT * FROM book WHERE book LIKE '%Sherlock Holmes%'; 

は、上記のクエリは、しばらくの間、99%であなたのCPUを持っている可能性がバイト。

データ型サイズについてはhttp://dev.mysql.com/doc/refman/5.6/en/string-type-overview.htmlを参照してください。

関連する問題