首页 > 解决方案 > 如何处理 mysql 和 laravel 中的数百万条记录

问题描述

如何在 MySQL 只读操作中处理超过 1000 万条记录。我有两张表,一张是company保存公​​司的记录,即它的名称和它提供的服务,因此有 2 列,大约有 300 万条记录,另一张表employee有大约 40 列和大约 1000 万条记录。当尝试获取数据时,即使是简单的查询,例如

Employee::paginate(100);
//In terms of mysql it
//select count(*)  as aggregate from 'employee'; 
//Select *  from 'employee' limit 100 offset 0;

过去大约需要 30 秒,而现在则需要永远。

如果我想进行搜索,应用过滤器或想加入两个表company,即employee有时它会工作,有时它会崩溃并在 SQL 服务器日志中给出很多错误/警告。谁能告诉我如何才能更有效地处理大量记录而不会导致 SQL 服务器崩溃,尤其是在高流量时间期间。目前,我只有主键,即 id 和联合 id 被索引。

与在 SO 上进行的所有类似查询相比,这是一种重复的帖子,但这些对我没有多大帮助。

我在 SO 上关注的问题

  1. 数十亿行的最佳数据存储
  2. 使用 mysql 处理非常大的数据
  3. https://dba.stackexchange.com/questions/20335/can-mysql-reasonably-perform-queries-on-billions-of-rows
  4. InnoDB (MySQL 5.5.8) 是数十亿行的正确选择吗?
  5. 在性能开始下降之前 MySQL 数据库可以有多大
  6. 在 PHP 中处理来自 MySQL 的数组中的数百万条记录?

标签: phpmysqllaraveleloquent

解决方案


进行以下更改:


推荐阅读