1.數字 A,數字 B,數字 c,第一次 ABC一次存入,記錄存入次數;第二次,其后記錄使用次數,要求最長的,使用次數最少的,達到1000次后,將被刪除。(只能使用本地緩存,中間件和數據庫沒有)
1>(無需大腦解)創建一個全局性的 map集合,把數字和時間,隨時間存入,到1000后進行,時間戳對比,以及相同的次數對比。
2>使用三個全局列表,統計次數各使用次數,最近使用時間,每次使用更新時間,當總和達到1000次后做時間對比和使用次數對比并刪除。
(期待后續補充,提供幾個最佳方案)
2. SQL優化
1>查詢優化:建立索引時,應盡量避免全表掃描,首先考慮對 where和 orderby所涉及的列建立索引
2>很多時候用 exists替代 in是個不錯的選擇
3>適當地使用索引,索引可以提高相應 select的效率,同時降低插入和更新的效率,
由于 insert或 update時有可能重新生成索引,因此需要仔細考慮如何建立索引,這取決于具體情況。
4>一張表的索引數目最好不超過6個,如果索引過多,則需要考慮對某些不常用的列建立索引的必要性。
5>盡可能使用 varchar替代 char,因為首先變長的字段存儲空間較小,從而節省存儲空間,
第二種情況是查詢,很明顯,在相對較小的字段中搜索效率要高一些。
6>任何地方都不要使用 select* from t,
將"*"替換為特定字段列表,而不返回任何不能使用的域
7>合理使用臨時表
8>避免使用游標,因為游標的效率很低,如果游標操作的數據超過10,000行,那么應該考慮重新編寫
9>盡量避免大事務操作,提高系統的并發能力
10>盡量避免返回大容量的客戶端,如果數據量太大,要考慮相應的需求是否合理。
3.在添加索引之后,如何使索引失效
最左匹配原則,后模糊不會使索引失效。
在 where子句中盡量避免
用!=或<>操作員,
判斷該字段的值為空,
用 or連接條件、
還應謹慎使用 in和 not in
使用表達式操作字段、
用功能運算字段、
不對"="左側執行函數、算術運算或其他表達式操作,否則引擎將放棄全表掃描以使用索引
結論:
有的是必須踏上的坑,有些是必須去做的,希望通過分享彼此進步,走過這條平凡的路。
————————————————
版權聲明:本文為CSDN博主「銳rui3g」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/d960704119/article/details/119762282