数据库(PostgreSQL)查询优化:使用联合索引

2022-09-2117:54:17数据库教程Comments1,932 views字数 636阅读模式

1. 数据类型:常用的数据列「不要使用」文本类型,尽量使用具体的数据类型。比如日期时间类型,如果存储类别为文本,数据需要逐字节扫描,而日期类型的话只需进行一次比较。这一条最为重要,是用血的教训换来的。之前做了个日志清洗程序,把在手上管理着的网络设备,一台BAS,两台无线控制器认证日志清洗后放在数据库了(其中日志里面的时间日期就是用文本格式存储的),因为单位无线系统是用的WPA2 Enterprise做的准入认证,这就导致了它产生数据速度非常快。数据量增加到千万级的时候,一个Select半天都出不来数据。后来将相关的列数据类型改为「日期/时间」类型后相同的查询(全表扫描)10多秒就出结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/27889.html

2. 建索引:索引就是提供给查询后面的Where子句用的,你常用哪些列,就把他做成索引。另外,在文本型数据列上创建索引,要加上TEXT_PATTERN_OPS,否则索引不能用于诸如like这样的操作符。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/27889.html

3. 使用部分索引:即只针对关注的数据建索引,以免进行无谓的扫描。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/27889.html

4. 使用分区表:将数据分类存储到不同的分区表,使用约束排除过滤不关注的数据,以快速检出所需数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/27889.html

5. 使用联合索引:Where子句涉及多个字段「and」操作时,可以通过创建联合索引(多字段索引)优化。子句中如果出现静态表达式时,可以创建表达式索引。所谓静态表达式,是每一次执行结果都一样的表达式。比如两个字段数据运算结果是静态的。但诸如current_timestamp这种,每一次运行结果都不一样,是动态的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/sjk/27889.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/sjk/27889.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定