哪种mysql方法快?

时间:2012-09-03 12:13:00

标签: mysql query-optimization

我在数据库中保存一些文字说1000个字符。 但我只显示前200个字符。

方法1
我可以在一列中保存前200个字符 和剩下的第二列sql表

方法2
我可以将所有内容保存在一列中,同时显示我可以 查询200个字符

4 个答案:

答案 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

回答