日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql 查询-从浆糊到清晰的过程

發布時間:2023/12/18 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql 查询-从浆糊到清晰的过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

記錄從給一個查詢需求整理自己的思路.

當新手菜鳥遇到一個新的需求時, 往往 理不清楚 業務的思路. 導致sql寫不出來.

當今互聯網的需求增多, 程序很多放到 語言層面去處理了, 只要做單表查詢就可以滿足需求, 造成

很多人寫sql依然還是老大難.

?

記錄我整理遺留業務造成線上功能加載1分鐘才能展示問題:

?業務比較復雜, 當初設計的人也都走光了. 一個簡單的業務, 居然需要表關聯十多張表才能得到一個想要的sql結果集.

而sql線上執行都在40秒到1分鐘左右.

很是痛苦. 看到一個訂單表中, 拿一個訂單生成時間, 還需要到一個日志表中關聯獲取, 都要罵娘了, 且日志存到了mysql里...

這個也是無語的.

我也是新手. 這兩年多的業務做的基本也是以 語言層面為主. sql多是些 簡單的查詢.? 導致一直沒有 深入.?

遇到這個業務后. 就更加體會到 sql的重要性.?

?

拿到業務, 了解業務需求之后, 通過對數據庫表, 是最快可以全面掌握解決方案的.

反問法:? (針對查詢業務)

1. 要什么數據?

2. 要誰的數據??

3. 要哪個時間段的數據?

?

一般要什么數據, 那他就是作為主線了, 以它的維度, 去考慮.

多表關聯時, 一定要注意 笛卡爾積的問題.? wait?? 啥是笛卡爾積? 我忘了.?

笛卡爾積: 當你的主表與其他表做關聯時,.主表可能 就會查詢出很多數據.?

當在去與關聯表去 inner或者left? join時, 會拿著主表查詢出的數據 依次去與關聯表匹配.

假設:? 主表查詢出 2w條數據, 關聯表給的條件又能查出5000條,??

結果在關聯時, 會拿著2w條依次去和5k條匹配. 也就是 2w *乘以?5k的效果.

再說點好理解的, 我給你2萬把鑰匙, 你要試出哪些 能開這5k把鎖. 這能快嗎...

怎樣可以提高查詢效率呢.

可以單次只拿少量的鑰匙, 去匹配. 這是我這次的解決方案.?

先寫個簡單的sql, mysql的話, 使用limit 0,10, 每次只取10條,

用這個簡單sql作為一個臨時表, 在和關聯表匹配. 效率就高了

還有, 就是? 內連接和 左連接? inner和 left的使用掌握不好, 不知道何時用哪個.

思路:? 這個思路不絕對.?

還是基于第一個簡單的sql, 查詢出的結果如果都對的話, 關聯其他表, 基本都是取一些 相關聯的字段了

如果表關聯, 數量保持單表查詢時的數量, 一般情況可以假設是 關聯的關鍵字用對了,

如果單表查詢與關聯后數量不一致了, 可以做個分組, 還不一致, 就可以考慮, 換個 關聯關鍵字了.?

如果使用inner后, 數量少了, 說明關聯后, 沒有匹配到數據,? ?造成把兩個表中的數據都舍棄了

就要換成left了, 起碼保留主表數據.

除非. 要求兩個表的數據要么都要, 要么都沒有這種, 就使用inner join

暫時總結這么多, 留著自己復習理解吧

?

總結

以上是生活随笔為你收集整理的sql 查询-从浆糊到清晰的过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。