postgresql查询数据sql无法使用到索引

news/2025/10/24 13:38:20/文章来源:https://www.cnblogs.com/Yoona520/p/19163054

249cf4d51b55cb050be917de54c3dbaa

842c74907243ca12791fba1c73d24070

   
  如图,刚做过数据迁移将postgresql14中的数据及表迁移到了kingbase数据库中,但发现查询数据在一定范围内内匹配到索引,超过之后就是全表扫描

  解决方法:VACUUM ANALYZE sc_surface_water_hour
  

在 PostgreSQL 中,VACUUM ANALYZE sc_surface_water_hour; 是一个组合命令,主要作用和对索引选择的影响如下:

一、命令的核心作用

该命令由 VACUUM 和 ANALYZE 两个操作组成,同时完成数据清理和统计信息更新:
 
  1. VACUUM 的作用
     
    当表中的数据被删除(DELETE)或更新(UPDATE)时,PostgreSQL 不会立即物理删除旧数据,而是将其标记为 “死元组”(dead tuples)。这些死元组会占用磁盘空间,且在扫描表时会被无意义地读取,降低查询效率。
     
    VACUUM 的作用是:
    • 回收死元组占用的磁盘空间,使其可被新数据复用;
    • 更新表的可见性映射(visibility map),帮助查询跳过无需扫描的 “全死” 数据块,提升扫描效率。
  2. ANALYZE 的作用
     
    PostgreSQL 的查询规划器(Query Planner)在生成执行计划时,需要依赖表的统计信息来判断最优路径(例如 “用索引扫描还是全表扫描”)。
     
    ANALYZE 的作用是:
    • 收集表的关键统计数据,包括:表的总行数、各字段的非空值数量、唯一值分布、数据块数量、字段值的频率分布等;
    • 将这些统计信息存储在系统表(如 pg_statistic)中,供查询规划器使用。

二、为什么会影响索引的选择?

查询规划器选择是否使用索引,核心依据是 ANALYZE 收集的统计信息。具体来说:
 
  1. 统计信息决定 “成本评估”
     
    规划器会基于统计信息计算不同执行路径的 “成本”(如 I/O 成本、CPU 成本)。例如:
    • 如果统计信息显示某字段的查询条件(如 WHERE status = 'error')只能过滤出极少数行(比如 1%),规划器会认为 “索引扫描” 更高效(先查索引定位行,再回表取数据);
    • 如果统计信息显示过滤后的数据量很大(比如 30% 以上),规划器可能认为 “全表扫描” 更高效(避免索引扫描的回表开销)。
  2. 过时统计信息会导致错误选择
     
    当表经过大量插入、更新、删除后,旧的统计信息会与实际数据分布脱节。例如:
    • 实际表中已新增 100 万行,但统计信息仍记录为 10 万行,规划器可能误判 “索引扫描成本更低”,但实际执行时因数据量过大导致效率下降;
    • 某字段原本重复值很少(适合索引),但经过大量更新后重复值占比极高(不适合索引),但统计信息未更新,规划器仍会错误选择索引。
  3. VACUUM 间接辅助统计准确性
     
    VACUUM 清理死元组后,表的实际数据量(活元组数量)会更准确,ANALYZE 基于清理后的数据收集统计信息,能进一步提升规划器对 “数据规模” 的判断准确性,间接影响索引选择。

总结

VACUUM ANALYZE 本质是通过清理无效数据和更新统计信息,让查询规划器能基于表的真实状态评估执行成本,从而更合理地选择是否使用索引(或选择哪个索引),最终优化查询性能。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

博弈1

巴什博奕有 \(N\) 个石子,两名玩家轮流行动,按以下规则取石子: 规定:每人每次可以取走 \(X(1 \le X \le M)\) 个石子,拿到最后一颗石子的一方获胜。 双方均采用最优策略,询问谁会获胜。两名玩家轮流报数。 规定:…

Day3综合案例一:个人简介

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

自动机

AC 自动机 定义 \(|s_i|\) 是模板串的长度,\(|S|\) 是文本串的长度,\(|\Sigma|\) 是字符集的大小(常数,一般为 \(26\)),时间复杂度为 \(\mathcal O(\sum|s_i|+|S|)\) 。 // Trie+Kmp,多模式串匹配 struct ACAut…

边缘计算与AI:移动端设计软件的实时性能突破 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

标注工具--抹除目标

恩,chatgpt帮我写的标注抹除的工具 import cv2 import numpy as np import argparse import os """ 左键拖动 框选区域 左键单击 粘贴选区 z 撤销上一次操作 c 取消当前选区 s 手动保存 n 自动保存当前…

1024程序员节福利!参与互动,5分钟赢好礼!

Hi 程序员朋友们! 敲得了代码,扛得住需求,也该在 1024 这个专属节日里,给自己拆份“技术人专属福利”啦~ 作为深耕开源数据库的 IvorySQL,今年 1024 不想搞复杂玩法——2 种方式,轻松参与,即可获得 IvorySQL 周…

具身智能/智能体 定义

1. 具身智能智能并非一个孤立于身体的大脑计算过程,而是源于身体与环境的实时交互。智能、知觉和行动是一个不可分割的整体。 一个系统必须拥有“身体”(可以是实体机器人,也可以是虚拟环境中的化身),并通过这个身…

【数据挖掘】基于随机森林回归模型的二手车价格预测分析(信息集+源码)

【数据挖掘】基于随机森林回归模型的二手车价格预测分析(信息集+源码)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: …

实用指南:flink批处理-水位线

实用指南:flink批处理-水位线2025-10-24 13:24 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importan…

字符串模式匹配算法 KMP

子串与子序列中文名称 常见英文名称 解释子串 \(\tt substring\) 连续的选择一段字符(可以全选、可以不选)组成的新字符串子序列 \(\tt subsequence\) 从左到右取出若干个字符(可以不取、可以全取、可以不连续)组成…

Z函数(扩展 KMP)

Z函数(扩展 KMP) 获取字符串 \(s\) 和 \(s[i,n-1]\) (即以 \(s[i]\) 开头的后缀)的最长公共前缀(LCP)的长度,总复杂度 \(\mathcal O(N)\)。 vector<int> zFunction(string s) {int n = s.size();vector&l…

常用例题

常用例题 题意:在一篇文章(包含大小写英文字母、数字、和空白字符(制表/空格/回车))中寻找 \({\tt helloworld}\)(任意一个字母的大小写都行)的子序列出现了多少次,输出结果对 \(10^9+7\) 的余数。 字符串 DP …

2025年环评公司权威推荐排行榜,环评手续,环评报告,环评验收,专业高效服务助力企业合规发展

2025年环评公司权威推荐排行榜,环评手续,环评报告,环评验收,专业高效服务助力企业合规发展 一、行业背景与发展趋势 随着中国生态文明建设的深入推进,环境保护法律法规体系日益完善,环境影响评价作为建设项目环境…

2025年棒球帽厂家推荐排行榜,运动棒球帽,时尚棒球帽,定制棒球帽,防晒棒球帽公司精选榜单

2025年棒球帽厂家推荐排行榜:运动、时尚、定制与防晒棒球帽公司精选榜单 行业背景与发展趋势 棒球帽作为兼具功能性与时尚性的头部配饰,近年来在全球市场持续保持增长态势。随着运动休闲风的盛行和个性化需求的提升,…

常见结论与例题

常见结论 题意:(区间移位问题)要求将整个序列左移/右移若干个位置,例如,原序列为 \(A=(a_1, a_2, \dots, a_n)\) ,右移 \(x\) 位后变为 \(A=(a_{x+1}, a_{x+2}, \dots, a_n,a_1,a_2,\dots, a_x)\) 。 区间的端点…

单芯片方案分享-CH336F-USB拓展坞+百兆网卡+读卡器+100W快充芯片

CH336F是符合USB2.0协议规范的 3端口HUB、USB高速读卡器、USB PD快充和USB转以太网四合一控制器芯片,该芯片集成 3口USB HUB、USB高速SD卡读卡器、USB PD快充和USB百兆以太网扩展功能。简介 CH336F是符合USB2.0协议规…

于状压的线性 RMQ 算法

基于状压的线性 RMQ 算法 严格 \(\mathcal O(N)\) 预处理,\(\mathcal O(1)\) 查询。 template<class T, class Cmp = less<T>> struct RMQ {const Cmp cmp = Cmp();static constexpr unsigned B = 64;usi…

Flink编程模型 - 详解

Flink编程模型 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

工业4.0下的边缘存储设计:材料就地处理,响应更快更安全

工业4.0下的边缘存储设计:材料就地处理,响应更快更安全pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

服务器关机用halt、poweroff还是shutdown -h now?一文帮你说明

我们需要对服务器进行关机的时候,选择必要的关机命令是非常重要的,本文将帮你说明linux系统中halt、poweroff及shutdown -h now 三个命令的区别并描述底层原理 一. halt功能:停止系统运行,但不一定关闭电源。行为:…