2

我想创建一个网站,用户可以在网站上注册并将 20 张图片上传到他们的帐户。(计划未来允许用户上传无限图片)

我在数据库中有两个表。一种用于保存用户数据表名-成员字段-用户ID、用户名、密码、电子邮件。其他用于保存图片路径表名-图片字段-用户ID、图片路径

所以我可以在他的页面中显示用户的图像,从表“图像”搜索图像路径

一切正常。但如果用户数量增长,这将变得更慢。例如 - 如果有 50000 个用户,我应该检查所有行以查找单个用户上传的图像,即;50000 个用户 ID * 20 个图像/用户 = 1000000 次扫描表行 这将使系统变慢并导致过载。我应该怎么做才能避免这种情况?

4

2 回答 2

3

创建这样的架构,

CREATE TABLE dataTable
(
    `userid` INT NOT NULL, 
    `username` VARCHAR(50) NOT NULL, 
    `password` VARCHAR(50) NOT NULL, 
    `email` VARCHAR(50) NOT NULL
    CONSTRAINT tb_pk PRIMARY (`userID`),
    CONSTRAINT tb1_uq UNIQUE (`username`)
);

CREATE TABLE pathTable
(
    `userid` INT NOT NULL, 
    `imagepath` VARCHAR(50) NOT NULL, 
    CONSTRAINT tb_fk FOREIGN KEY  (`userID`) REFERENCES dataTable(`userid`)
);

userid将of指定pathTable为引用某个表的(dataTable)主键的外键,服务器会自动为其编制索引,这将使其搜索速度更快。

于 2012-10-07T06:49:55.900 回答
1

在第二个表中的用户 ID 字段上创建索引。语法: http ://dev.mysql.com/doc/refman/5.0/en/create-index.html

在 mysql 中使用 INDEXES 的最大好处是什么?

于 2012-10-07T06:48:29.520 回答