• 数据库点滴积累——索引


    索引

    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操作的。

    转自http://gaizai.cnblogs.com/

  • 相关阅读:
    盒模型的属性丶display显示丶浮动
    css样式
    HTML(2)
    HTML(1)
    IO多路复用丶基于IO多路复用+socket实现并发请求丶协程
    进程丶数据共享丶锁丶进程池丶模块(爬虫)
    Sublime Text 3 程序运行后中文显示乱码的解决方案
    sublime Text3中文字体错位问题解决办法
    Sublime Text 3 遇到的一些小坑的解决方法
    在Sublime Text 3中配置Python3的开发环境/Build System
  • 原文地址:https://www.cnblogs.com/zhijianliutang/p/2328298.html
Copyright © 2020-2023  润新知