2012-03-05 85 views
-4

在我的數據庫中,我有超過1000本書和平均約100頁的書(可能更多或更少)。我在想:如何存儲數據,如書籍?

  • 是否有可能每本書存儲在一個單一的領域?像:

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

其中bookContent將是整本書的內容。

  • 如果將它們存儲到MySQL中不是個好主意,那麼最好的辦法是什麼?
+3

我們需要更多的信息來了解你想要做什麼來提供明智的答案。 – 2012-03-05 00:35:21

+0

究竟是什麼「MySQL單元格」? – 2012-03-05 00:36:10

+0

根據他發佈的查詢,我猜'單元格'意味着一行。 – Corubba 2012-03-05 00:51:17

回答

0

總之是的,但因爲一個最大長度爲大多數類型的數據,您將需要使用二進制數據類型,如斑點,其最大是如此之高,你將永遠無法達到的。(最有可能)

您可能必須使用mysql_real_escape_string() 之類的函數來處理特殊字符。我正在存儲歌詞,必須避開字符串以防止出現錯誤。

in perl $connect->quote("book contents from first page to end..."); 嘗試將值插入表中之前。

我不確定插入整本書本身是明智的。至少應該有一個獨特的book#字段,如果你願意,你可以在另一個表中添加作者,標題,出版商等。如果你在表格或其他表格中沒有其他字段,你將不會能夠輕鬆查詢某些書籍。

你想看所有的福爾摩斯書籍....它不會容易。該數據庫將運行速度非常慢,因爲它必須搜索每本書的內容「福爾摩斯」。

現在,如果你的表有作者,出版商,標題和等再

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