我在数据库中保存一些文字说1000个字符。 但我只显示前200个字符。
方法1
我可以在一列中保存前200个字符
和剩下的第二列sql表
方法2
我可以将所有内容保存在一列中,同时显示我可以
查询200个字符
答案 0 :(得分:4)
将所有内容存储在1列中会更“干净”。你只能选择前200个字符
select substring(your_column, 1, 200) as your_column from your_table
答案 1 :(得分:1)
这确实无关紧要,但是如果你尝试优化,那么方法1就更好了,只要你将查询限制在那一列(或者你只查询你真正需要的那些列),因为做任何{{1}服务器端需要时间和资源(请求数量...)。方法2更清洁,但是你要优化方法1。
答案 2 :(得分:0)
这将归结为两件事之一:
如果您将整行重新拉回到PHP中,然后只显示前200个字符,那么您的网络速度可能会成为拉回数据的瓶颈:
另一方面,如果您有两列,则可能会在驱动器访问时遇到瓶颈,这会将数据提取回PHP - 较长的行可能导致对多行的访问速度变慢。
这将归结为服务器特定的权衡。这实际上取决于服务器的性能。我建议运行一些场景,你的代码试图将每个代码的数量减少到几十万,以查看它需要多长时间。
答案 3 :(得分:0)
方法2。
首先,重复存储数据通常是不好的(道德化)。在这种情况下,这当然是正确的。
其次,写入两个表而不是一个表需要更长的时间。
第三,您现在已经进行了更新并且删除了容易受到恼人的不一致的情况(请参阅#1)。
第四,除非您在前200个字符中搜索文本,否则两种方法的数据输出都是相同的(只需选择前200个字符的子字符串)。
第五,即使您正在搜索前200个字符,也可以对这些字符进行索引,并且检索速度应该相同。
第六,您不希望数据库设计限制您的用户体验 - 如果您需要更改为500个字符,该怎么办?你需要做很多工作。
这是一个非常明显的例子,说明数据库设计中不应该做什么。
参考:由Joe Emison http://www.quora.com/MySQL/Which-mysql-method-is-fast
回答