在我的数据库中,我有超过1000本书和平均约100页(可能更多或更少)。我在想:
是否可以将每本书存储在一个字段中?像:
INSERT INTO bookContent VALUE("book contents from first page to end...");
其中bookContent
将是整本图书内容。
答案 0 :(得分:1)
简而言之,是的,但由于大多数类型数据的最大长度,您需要使用二进制数据类型,例如blob,其中max是如此之高,您将永远无法达到它。(最有可能)
您可能必须使用mysql_real_escape_string()
之类的函数来转义字符串
处理特殊字符。我正在存储歌词,不得不逃避字符串以防止错误。
in perl $connect->quote("book contents from first page to end...");
在尝试将值插入表中之前。
我不确定单独插入整本书是明智的。应该至少有一个独特的书籍#字段,所以,如果你愿意,你可以有另一个表,包括作者,标题,出版商等。如果你在表格或其他表格中没有其他字段,你将不会能够轻松查询某些书籍。
你想看所有福尔摩斯的书......这并不容易。数据库运行速度令人难以置信,因为它必须在每本书的内容中搜索“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%';
根据每本书的实际大小(以千克或兆字节为单位),上述查询可能会使您的cpu暂时保持在99%。
参见http://dev.mysql.com/doc/refman/5.6/en/string-type-overview.html 对于数据类型大小。