最近遇到這麼個問題
- 表a : 歌單表 music_list
- 表b : 歌曲詳情表 music_detail
一個歌單對應多個歌曲詳情,但在表的設計時,沒有考慮到在 music_list 設置一個字段標記對應的 music_detail數據條數。在數據已經入庫了之後,同事修改了功能需求。通過測試發現,如果每次使用的時候纔在sql中統計歌單music_list 對應的歌曲詳情music_detail 查詢時間居然高達11秒。這顯然是我們絕對不能接受的。
由於我們的數據量很大,第一次入庫花了大約6個小時。修改入庫代碼顯然也很麻煩。那麼我就想能不能直接寫一個SQL語句直接統計出結果呢。
實測以下SQL可行
UPDATE music_list l SET l.music_count = (SELECT COUNT(*) FROM music_detail m WHERE l.id = m.music_list_id);