【发布时间】:2019-03-31 19:55:24
【问题描述】:
如何在 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 上关注的问题
- Best data store for billions of rows
- Handling very large data with mysql
- https://dba.stackexchange.com/questions/20335/can-mysql-reasonably-perform-queries-on-billions-of-rows
- Is InnoDB (MySQL 5.5.8) the right choice for multi-billion rows?
- How big can a MySQL database get before performance starts to degrade
- Handling millions of records in arrays from MySQL in PHP?
【问题讨论】:
-
'employee' 是一个字符串,因此您的示例查询没有多大意义
-
@Strawberry 我正在使用雄辩的 ORM 。所以我没有直接使用原始 sql 查询。我写这个只是为了让你知道这个雄辩的查询会变成什么。
标签: php mysql laravel eloquent