【问题标题】:Performance: fetching data from Database or replacing it to make new data性能:从数据库中获取数据或替换它以生成新数据
【发布时间】:2016-06-09 12:29:03
【问题描述】:

我不想开始讨论,所以我将我的问题保持在数字上。

我的 MySQL 数据库中有一个包含 3099916 条记录的表。现在表格的两列除了一个字符之外是相同的。

在我的例子中,它们是来自同一张图片的 URL 和 Thumbnail_URL。

URL 字符串大小为 72 个字符。

     like image URL is  12345sss_a.jpg
while Thumbnail URL is  12345sss_b.jpg

现在什么对我更好,即最有效的方法

  1. 从表中获取两个 URL。
  2. 从表中取出一个并通过替换一个字符来制作第二个。

【问题讨论】:

  • 为什么不对这两个选项进行基准测试并选择最好的?
  • 知道了。谢谢你的建议。
  • 总是_a_b?然后,您实际上可以去掉一列并在 PHP 中添加后缀。
  • 好吧,不仅仅是按照 Rick James 的回答。仅存储图像文件名词干并在需要的位置添加后缀。这样一来,您只需要一列就可以更快地查询数据库(尤其是在索引良好的情况下)。
  • 我投票决定将此问题作为离题结束,因为这可能因计算机而异,并且在提问者的情况下应该很容易进行基准测试。

标签: php mysql database performance database-performance


【解决方案1】:

您只能将上传的图像名称存储到数据库中,然后将真实图像和拇指图像上传到服务器并命名为imagename_80x80.jpg, imagename_200x200.jpg.

当您想显示任何图像时,只需从数据库中获取图像的真实名称,然后输入您想要的缩略图大小的后缀图像大小。

通过这种方式,您可以上传多个缩略图并提高查询性能。

【讨论】:

  • 我想你没有完全理解我的问题。
【解决方案2】:

加一用于基准测试。

但实际上,除非您在某处有资源限制,否则我怀疑您能否分辨出差异。

这都是基于假设,但我猜你有 PHP 代码可以根据某些标准检索图像信息。其中最昂贵的部分是“where”子句——如果这很慢,其他一切都会很慢。

您从此查询返回的列数对性能没有显着影响,除非您返回大量列,或者列非常大。

因此,您不妨在同一查询中同时检索图像和缩略图列。

另一方面 - PHP 中的字符串替换功能也非常快,所以再说一遍 - 除非您在页面上显示大量图像,否则您不太可能看到可测量的差异。如果您在页面上显示大量图像,下载时间和浏览器呈现比 PHP 字符串替换更成问题...

【讨论】:

    【解决方案3】:

    仅存储 12345sss。选择时,添加后缀以获取图像或拇指。

    【讨论】:

      【解决方案4】:

      取决于您的数据库的大小

      在当前情况下,替换要好得多,因为你的桌子很大。

      【讨论】:

        猜你喜欢
        • 2017-06-16
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-18
        • 1970-01-01
        相关资源
        最近更新 更多