关于 mysql 关联查询的一些疑惑

发布于 2022-09-04 06:04:04 字数 1302 浏览 16 评论 0

【join查询这种黑科技在数据量小的情况下可以使用,基本没有什么影响,数据量大的时候,join的性能可能会是硬伤,应该尽量避免,可以分别根据索引取单表数据然后在应用层对数据进行join、merge】, 想问下例如现在有三个表 userdepartmentarticle, album(专辑)

user表:

id int primary key auto_increment,
name char(32),
password char(32),
created_at bigint,
updated_at bigint,
is_delete int default 0,
dep_id int (对应department表的 `id`)

department表:

id int primary key auto_increment,
name char(32),
pid int default 0,
created_at bigint,
updated_at bigint,
is_delete int default 0

article表

id int primary key auto_increment,
title char(100),
content text,
user_id int,(对应 user 表的 `id`)
cate_id int,
album_id int, (对应 album 表的 `id`)
created_at bigint,
updated_at bigint,
is_delete int default 0

album专辑表:

id int primary key auto_increment,
title char(100),
user_id int, (对应 user 表的 `id`)
pid int default 0,
created_at bigint,
updated_at bigint,
is_delete int default 0

现在想查询 用户id 为 5 , 并找出属于他自己 专辑id 为 10 下最新发表的 10 篇文章(这10篇当中当然不能包括被删除的文章), 不能使用 join 关联查询, 而是使用这种方式实现[分别根据索引取单表数据然后在应用层对数据进行join、merge], 该如何实现呢?(最好能够有sql举例说明)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

放赐 2022-09-11 06:04:04

首先你要理解什么叫做在应用层面实现。
另外一个,你都知道user_id为5了,根本涉及不到什么关联查询,你直接:

select * from article where user_id = 5 and is_delete = 0 order by id desc limit 10;

就可以搞定了啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文