数据库(PostgreSQL)查询优化:使用共享索引
1。 数据类型 :常用数据列 “不要使用” 文本类型,尽量使用特定数据类型。例如,对于日期和时间类型,如果存储类型是文本,则必须逐字节检查数据,而对于日期类型,只需要进行一次比较。这是最重要的,也是有血的教训的。我之前创建了一个日志清理程序,清理了我管理的网络设备、BAS 和两个无线控制器的身份验证日志,并将它们放入数据库中(日志的时间和日期以文本格式存储)。由于该设备的无线系统使用 WPA2 Enterprise 来验证访问,因此它可以非常快速地生成数据。当数据量增加到千万级时,Select半天都出不出数据。后来,将相关列的数据类型更改为“日期/时间”后,相同的查询(全表扫描)在10多秒内返回结果。
2。 创建索引: 索引用于查询末尾的Where子句。索引是由您常用的列组成的。另外,在文本数据列上创建索引时,必须添加TEXT_PATTERN_OPS,否则索引无法用于like等运算符。
3. 使用部分索引:换句话说,只索引感兴趣的数据,以避免不必要的扫描。
4。 使用分区表:将数据分类存储在不同的分区表中,并使用约束排除和过滤不感兴趣的数据,以快速发现所需的数据。
5。 使用公共索引:当Where子句中包含多个字段“与”操作时,可以通过创建公共索引(多字段索引)来优化。如果语句中出现静态表达式,则可以创建表达式索引。所谓静态表达式,就是每次执行结果都相同的表达式。例如,两个字段数据运算的结果是静态的。但例如 current_timestamp 结果每次运行时都不同并且是动态的。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。