作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想创建一个网站,用户可以在该网站上注册并将 20 张图片上传到他们的帐户。 ( future 计划允许用户无限上传图片)
我在数据库中有两个表。一个用于保存用户数据表名 - 成员字段 - 用户 ID、用户名、密码、电子邮件。其他用于保存图片路径表名-图像字段 - 用户 ID、图片路径
所以我可以在他的页面中显示用户的图像,从表“图像”中搜索图像路径
一切正常。但如果用户数量增长,这将变得更慢。例如 - 如果有 50000 个用户,我应该检查所有行以查找单个用户上传的图像IE;50000 个用户 ID * 20 个图像/用户 = 1000000 次表行扫描这将使系统变慢并使系统过载。我应该怎么做才能避免这种情况?
最佳答案
像这样创建一个架构,
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`)
);
将 pathTable
的 userid
指定为引用特定表 (dataTable) 主键的外键,服务器自动为其建立索引这将使搜索速度更快。
关于mysql - 如何避免数据库全表扫描?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766733/
我在尝试获取我想要的结果集时遇到了一些问题。基本上我有这两个表: phonemanager_defaults | id | tag | number | |--
我是一名优秀的程序员,十分优秀!