这是一个可以变得庞大的网站的最佳MySQL数据库架构吗?

时间:2011-03-09 12:02:08

标签: php mysql

我草拟了一个网站的数据库布局,这个网站有可能在一分钟内变成100个查询。

我在考虑做以下事情:

用户表
ID
命名
(少数几个字段)

页面(这个会成为最大的一张桌子)
ID
Titel的
IMG
文字
restaurant(这将是将页面连接到用户表的行,我计划在此创建索引以提高速度)

所以我想知道是否为'restaurant'行创建一个索引会增加我的查询速度,或者是否还有其他方法来加快速度?

提前致谢!

3 个答案:

答案 0 :(得分:2)

如果您需要执行以下查询:

select *
from pages
where restaurant = ...

或者喜欢:

select *
from user
    inner join pages on pages.restaurant = user.id
where user.name = '...'

restaurant列上的任何其他条件,您可能希望在该列上添加索引,以避免扫描pages表上的所有行。


但请注意,有用/必要的索引几乎总是取决于您将要执行的查询类型。

这意味着您无法准确地猜测您需要哪些索引 - 首先,您需要知道如何访问您的数据。


注意:您应该阅读MySQL手册的How MySQL Uses Indexes部分:它包含了解有趣的内容; - )

答案 1 :(得分:0)

作为测试,您始终可以在首选工具中运行查询,并在前面添加EXPLAIN。这将显示正在使用的索引和/或必须创建的临时表等。

EXPLAIN select *
from pages
where restaurant = ...

答案 2 :(得分:0)

如果您正在使用InnoDB存储,则不应仅使用“索引”,而应使用FOREIGN KEY。因此,您还将减少潜在的完整性问题。

建议:不要使用restaurant作为名称。添加更多表格,很难跟踪什么参考。为什么不叫它user_id? (但这是个人偏好的问题。)