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. 為什么我ping不通我的docker容器呢???2. java - 自己制作一個視頻播放器,遇到問題,用的是內置surfaceview類,具體看代碼!3. 服務器端 - 采用nginx做web服務器,C++開發應用程序 出現拒絕連接請求?4. javascript - 有什么兼容性比較好的辦法來判斷瀏覽器窗口的類型?5. 關于docker下的nginx壓力測試6. javascript - vue 移動端的input 數字輸入優化7. javascript - Angular controlller控制域和原生js的關系8. javascript - npm start 運行’webpack-dev-server’報錯 Cannot find module ’webpack’9. HTML5禁止img預覽該怎么解決?10. python - pandas按照列A和列B分組,將列C求平均數,怎樣才能生成一個列A,B,C的dataframe
