数据库点滴积累——索引
索引
1、复合索引(where a and b)如果没有对a和a做单一索引,查询的时间为a;如果对a做单一索引,查询时间为b;如果对b做单一索引,查询时间为c;如果对a,b做复合索引,查询时间为d,那么时间的比较就应该是a>b=c>d;(比如spMsgreader_Distribute中使用where inforID=@infoID and UserID=@userID,插入7000次的时候就明显的看到性能了;(8秒:1:50秒)注意升序和降序的区别?)
2、当高选择性的非聚集索引达到5%的选择性时,该索引时非常有用的
3、关于复合索引属性列位置问题,应该把高选择性的列放在坐左边(以前就忽略了这个高选择性的位置),那个通过IP和UrlID的SARG中我们可以创建一个IP和UrlID的复合索引,通过业务来说,我们测试的时候可能是比较大,但是在生成环境中,应该是UrlID的重复量会比较大,所以就IP放在复合索引的最左边。
4、对EasyUrl跳转功能中,需要通过输入地址来查询目标地址,这个数据库查询可以使用覆盖索引,查询的速度是最快的。
5、当返回一个聚集索引列和一个非聚集索引列,并且是使用非聚集索引属性作为sarg,那么这也是一个索引覆盖查询,因为在非聚集索引包括聚集索引,所以直接在B-Tree就返回了数据,不用查询数据页
6、在查询select语句中使用where子句限制返回的行数和列数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,家中网络的负担降低了性能。
7、对于长字符列的索引,我们可以使用哈希索引,也就是checksum函数,具体用法可以看帮助文档;通常情况下我们对长字符列建立索引的,而且我们的业务逻辑中对长字符作为内容的搜索也是不常见的,但是如果需要,可以考虑哈希索引,有些同学可能会说为什么不用全文索引呢?因为毕竟全文索引时要花费很多磁盘空间和IO操作的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架