如何提高数据库的速度?

时间:2015-06-26 12:48:35

标签: mysql

我开始使用mysql在我的职业生涯中创建我的第一个Web应用程序。

我打算制作包含用户信息的表格(如id,名字,姓氏,电子邮件,密码,电话号码)。

以下哪项更好?

  1. 将所有数据放入一个表(userinfo)。

  2. 按字母字符划分所有数据,并将数据放入多个表格中。例如,如果用户的电子邮件ID是放入表格(userinfo_j)的Joe@gmail.com,并且如果用户的电子邮件ID是放入表格的用户信息(userinfo_k)的kevin@gmail.com。

3 个答案:

答案 0 :(得分:3)

我不想听到居高临下的声音,但我认为你应该花一些时间阅读数据库设计,然后再处理这个项目,尤其是normalization的概念,它提供了一致且经过验证的规则。将信息存储在关系数据库中。

一般来说,我的建议是建立您的数据库,以便易于维护和理解。在现代硬件上,具有运行关系查询的索引的设计合理的数据库可以支持数百万条记录,通常是数十或数亿条记录而没有性能问题。

如果您的数据库存在性能问题,请先调优查询;第二个添加索引,第三个购买更好的硬件,如果这不起作用,您可能会考虑一种使应用程序难以维护的设计(通常称为非规范化)。

对于大多数情况,您的第二个解决方案几乎肯定会变慢。

通过索引字段进行搜索时,关系数据库非常非常快;正在搜索"电子邮件,例如' Joe@gmail.com'"合理的数据库上的数据太快,无法在拥有数千万条记录的数据库上进行测量。

然而,包括找到正确搜索表的逻辑几乎肯定会比在所有表中搜索慢。

特别是如果你想搜索电子邮件地址以外的东西 - 想象一下找到上周注册的所有用户。或者谁有权在您的申请中做某件事。或谁拥有@ gmail.com帐户。

因此,从设计/维护的角度来看,第二种解决方案很糟糕,并且几乎肯定会变慢。

答案 1 :(得分:0)

第一个更好。第二,你必须编写额外的逻辑来找出你将开始研究的表。为了加快搜索速度,您可以实现索引器。在这里,我假设您将更频繁地执行相同的操作,而不是少于或多于操作,因此您可以尝试使用Hash实现索引器。对于比较操作,B-Tree更好。

答案 2 :(得分:0)

像其他人说的那样,第一个更好。特别是如果您需要在数据库中添加其他表并将它们链接到用户表,因为第二个表很快就会无法工作并在表数量增加时创建关系。