我想创建一个网站,用户可以在网站上注册并将20张图片上传到他们的帐户。 (计划允许用户以后上传无限图片)
我在数据库中有两个表。 一个用于保存用户数据 表名 - 成员 字段 - 用户ID,用户名,密码,电子邮件。 其他用于保存图像路径 表名 - 图像 字段 - userid,imagepath
因此,我可以在表格'images'
的页面搜索图像路径中显示用户的图像事情进展顺利。但如果用户数量增长,这将变得更慢。 例如 - 如果有50000个用户,我应检查所有行以查找由单个用户上传的图像 即; 50000用户ID * 20图像/用户= 1000000扫描表行 这将使系统变慢并使过载。 我该怎么做才能避免这种情况?
答案 0 :(得分:3)
创建一个这样的Schema,
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
pathTable
指定为引用某个表( dataTable )主键的外键,服务器自动将其编入索引,这样可以加快搜索速度
答案 1 :(得分:1)