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