500000用户数据库速度相当慢

时间:2016-05-08 12:27:11

标签: mysql database performance optimization

我有一个具有以下结构的数据库:

username,email,ip,hash,salt

目前,我们在此数据库中拥有大约600,000个用户。 用户抱怨查询这个数据库的速度很慢。

在我们的测试中,我们发现检索用户记录大约需要1.15秒。 此测试基于以下查询:

SELECT * FROM users WHERE email = 'test@mail.com'

我不是数据库管理方面的专家。我知道如何像字典一样使用它,但我不知道数据库优化。

我希望能得到一些帮助。理想情况下,即使是1000万用户,我们也可以在不到一秒的时间内查询这样的数据库。

有没有人对优化像这样的简单查询有任何建议?我现在对任何事情都开放,即使重组数据库,如果有更合理的方法可以做到这一点。因为现在,他们只是按照他们注册的顺序排序。

2 个答案:

答案 0 :(得分:2)

MySQL有两个重要的提升性能​​的工具。对于您的查询类型,500,000行或10,000,000行并不是什么大问题。虽然NOSQL等其他技术可以执行相同的操作,但您的应用程序通常依赖于数据库的ACID属性。关系数据库可能是正确的解决方案。

第一个设施 - 如其他地方所述 - 是索引。在你的情况下:

create index idx_users_email on users(email);

索引会导致insertdelete操作的开销非常小。但是,对于索引,查找行应该会下降到0.1秒以下 - 即使是并发查询。

根据您正在运行的其他查询,其他索引可能是合适的。

第二个重要功能是对表进行分区。对于users表,这不是必需的。但是,它对于事务和其他类型的数据非常有用。

答案 1 :(得分:0)

你可以添加一个索引,如评论中已经提到的那样,但是有一个想法存在 - 你当前正在检索该行的所有信息 - 将查询定位为仅检索必要的信息会更有效 - 例如如

SELECT username FROM users WHERE email = 'test@mail.com';

另外 - 您应该调查PDO和绑定参数以确保安全性。