【问题标题】:PHP read file vs MySql queryPHP 读取文件 vs MySql 查询
【发布时间】:2013-11-28 15:35:54
【问题描述】:

这是计划。我从包含 10 000 个条目的数据库中提取了一个大型 CSV 文件。这些条目看起来像:

  • 名字
  • 姓氏
  • 电话
  • 传真
  • 移动
  • 地址
  • jav-2012-selltotal
  • fev-2012-selltotal
  • 等等..等等..

所以,我已经阅读了有关将这些 CSV 数据导入 MySQL 数据库的信息,并查询这些数据库以了解 2012 年 2 月谁的销量更高,或者 john 的总销量是多少.. 或者我要求的任何...

但是为了优化目的,缓存、优化和索引查询是必须的……女巫引导我提出这个问题。由于我知道 2-3 查询,我将一直对数据库执行...获取 CSV 文件、在 PHP 中发出请求并在磁盘上写入结果文件是否更快,所以我的所有调用都将是 readfile -加载它,显示它?

问题的另一种说法...查询数据库比读取文件到磁盘更快还是更慢?因为如果数据库有 10 000 条记录,而出售 paul 的结果是 100 行,则文件将仅包含 100 行,它会很小......查询总是需要大约相同的时间

请帮助,我不自己编写代码只是为了发现对你来说显而易见的事情...... 提前致谢

【问题讨论】:

  • 将查询结果写入 FILE 会使所有的 DB 优化、索引完全没用?阅读文件将永远是“完美的”,因为我知道 2012-result.txt 是我需要的答案,而在 paul-file.txt 中所有的保罗都在卖

标签: php mysql database file


【解决方案1】:

如果您遵守数据库规范化规则并将所有内容都保存在数据库中,那么您就可以了。 10k 条记录并不多,您不必担心性能。

数据库查询速度更快,因为除非完全读入 RAM,否则数据会(部分)缓存在内存中而不是普通磁盘上。

一些纯文本文件乍一看可能会更快,但是当您在数据库中有 10 万个文件和 10 万个数据集时,数据库会好得多,.. 您没有无限的 (并行)inode 访问并且正在减慢并杀死您的硬盘驱动器/ssd。 你拥有的文件越多,一切变得越慢。

您还必须为已经集成到 MySQL 中的读/写操作手动编写 锁定队列行-表锁定强>)。

考虑在几个月后您想扩展所有内容,...您将如何在文本文件中实现JOINS?所有聚合功能 MySQL 已经内置 (GROUP BY, ORDER BY,...)。

MySQL 有一个 profiler(在每个语句之前使用 EXPLAIN),并且可以优化更大的数据集。

当我上学时,我对老师说:'普通文件很多 比你的 MySQL 快。我为每个用户创建了一个目录 并将属性存储在每个用户文件夹内的文本文件中,只是 喜欢:/menardmam/username.txt/menardmam/password.txt/DanFromgermany/username.txt, .... 我试图对此进行基准测试 文本文件更快,但这仅仅是因为它只有 1000 个文本文件。 当涉及到实际业务时,1000000000 个数据集,组合和 交叉连接,文本文件无法做到这一点,并且在申请工作时展示您使用 MySQL 的工作比使用文本文件完成的工作要好得多。

【讨论】:

  • 我已经读过手动缓存在文件中查询的结果总是比执行查询快...我说的例子是 10 000,它可以是 100 000、百万或只是 60 !
  • 你的学校实验证明了我的观点......我不会像 facebook 那样增长数据库......我会保持小规模,低于 100 000 条记录!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多