left-join - 关于 mysql 关联查询的一些疑惑
问题描述
【join查询这种黑科技在数据量小的情况下可以使用,基本没有什么影响,数据量大的时候,join的性能可能会是硬伤,应该尽量避免,可以分别根据索引取单表数据然后在应用层对数据进行join、merge】, 想问下例如现在有三个表 user、department、article, 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举例说明)
问题解答
回答1:首先你要理解什么叫做在应用层面实现。另外一个,你都知道user_id为5了,根本涉及不到什么关联查询,你直接:
select * from article where user_id = 5 and is_delete = 0 order by id desc limit 10;
就可以搞定了啊
相关文章:
1. dockerfile - 我用docker build的时候出现下边问题 麻烦帮我看一下2. java - jdbc无法连接postgresql数据库3. 为什么我ping不通我的docker容器呢???4. java编程思想第4版中文版的几处谬误?5. docker-machine添加一个已有的docker主机问题6. Mongodb web连接28017后,提示登录的用户名密码在 db那里预设置7. 请问怎么改变超链接字体的颜色?8. java - 做数据库向手机端的推送要系统地学习哪些知识?求大神指点,谢谢!9. 在add.php中提交数据库已有的姓名,没有提示框10. 急急急!!!求大神解答网站评论问题,有大神帮帮小弟吗