哪种mysql方法比较快?

哪种mysql方法比较快?,mysql,query-optimization,Mysql,Query Optimization,我正在数据库中保存一些文本,比如1000个字符。 但我只显示前200个字符 方法1 我可以在一列中保存前200个字符 剩余的在sql表的第二列中 方法2 我可以将所有内容保存在一列中,同时显示 查询200个字符 将所有内容存储在一列中会更“干净”。您只能选择像这样的前200个字符 select substring(your_column, 1, 200) as your_column from your_table 这确实是不相关的,但如果您尝试优化,那么方法1更好,只要您将查询限制在该列

我正在数据库中保存一些文本,比如1000个字符。 但我只显示前200个字符

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

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

将所有内容存储在一列中会更“干净”。您只能选择像这样的前200个字符

select substring(your_column, 1, 200) as your_column from your_table

这确实是不相关的,但如果您尝试优化,那么方法1更好,只要您将查询限制在该列(或者您只查询您真正需要的这些列),因为在服务器端执行任何
子字符串都需要时间和资源(请求数的倍…)。方法2更干净,但您对时间进行了优化,因此方法1。

这将归结为两件事之一:

如果将整行拉回到PHP中,然后只显示前200个字符,那么网络速度可能会成为拉回数据的瓶颈:

另一方面,如果您有两个列,那么您的驱动器访问可能会出现瓶颈,这会将数据回迁到PHP—较长的行可能会导致对多行的访问速度较慢


这将归结为特定于服务器的权衡。这实际上取决于服务器的性能。我建议您运行一些场景,其中您的代码尝试从每个场景中提取几十万,看看需要多长时间。

方法2。

首先,重复存储数据通常是不好的(士气低落)。在这种情况下,这当然是正确的

其次,写入两个表的时间比写入一个表的时间长

第三,您现在已经进行了更新并删除了易受恼人的不一致性影响的内容(请参见#1)

第四,除非在前200个字符中搜索文本,否则两种方法的数据输出都是相同的(只需选择前200个字符的子字符串)

第五,即使您正在搜索前200个字符,您也可以对这些字符进行索引,并且检索速度应该相同

第六,您不希望数据库设计限制您的用户体验——如果需要更改为500个字符怎么办?你会有很多工作要做

这是数据库设计中不应该做的一个非常明显的例子


参考:正如Joe Emison所回答的那样,让我重新表述一下我们的问题:
伙计们,有人可以根据我的需要对数据库进行分析研究吗?
;)那么生产力呢?在每秒10000个请求内调用DB
substring()
方法会比简单地选择一个单元格更快吗?
substring
是一个非常快的函数。我怀疑这个简单的函数是否存在性能问题。但我没有这么大的负荷尝试。考虑谷歌搜索结果,它做了这样的事情。所以我认为可以使用substring()