如何獲取想要的資料?

离是伞中仙發表於2024-06-21

前提:資料庫:MongoDB 數量級:千萬級

問題:經常需要用到一個特定條件的最新資料,但是這三個資料在不同表裡面,想著編寫個查詢語句,就不用挨個表去檢視。

預想方式一
在 navicat 查詢語句中編寫一個聚合查詢語句,但是不知道是什麼原因查了 600s 沒出結果就自動斷開(可能是超時了),最終這個方式以失敗告終 qaq
預想方式二
用 pytest 編寫單表查詢語句,需要的查詢條件在查詢語句外面傳遞。最終藉助著小機器人寫出來了。
反思
1.對時間型別轉換操作不熟悉導(不理解為要用 datetime.datetime.strptime 轉換獲取的 datetime.datetime.now())才能被 Mongo 查出來
2.Mongo 集合名寫錯導致一直查不到資料,這裡以後要加個集合能連線正確的判斷。
3.查詢欄位名寫錯導致一直查不到資料
4.這是最後發現的問題,也是最大的問題,編寫思路有嚴重的問題,其實一開始只需要用到兩個表,在對一張表裡面的結果欄位做篩選,就可以代替另一張表的條件查詢(這裡的條件查詢時間導致我編寫除錯這個簡單的指令碼一共花了 4 個小時),因為這裡的時間沒有加索引,也就是不管我篩選多麼短的時間,他都是從第一條最早建立的資料逐條匹配。這次對索引有了切身的體會。

收穫
1.查詢的速度的快慢取決於:網速 + 資料量 + 索引
2.編寫思路好壞取決於對資料庫的熟悉程度(索引 + 表結構)
3.還是想再誇一下索引,索引不是快一點點,是直接快到飛起

相關文章