当前位置: 首页 > news >正文

达梦sql索引不生效

常见场景:

  • 刚导入了大量数据(比如从别的库迁移过来);
  • 对某张表做了大量 DELETE / INSERT,行数变化非常大;
  • 新建了索引,特别是影响关键查询的索引;
  • 某些业务查询突然变慢,而且怀疑是执行计划变了;
  • 升级数据库版本、调整某些优化器参数之后。

解决办法

遇到这种问题,通常是数据库优化器不生效,在mysql中优化器会自动处理数据的信息,但是达梦数据库需要收到收集数据统计信息,语法如下:

BEGINDBMS_STATS.GATHER_TABLE_STATS(ownname => 'schema_name',     -- 表所属用户tabname => 'tbal_name', -- 表名cascade => TRUE          -- 同时也收集索引的统计信息);
END;
-- 或者下面的写法也可以
CALL DBMS_STATS.GATHER_TABLE_STATS('schema_name', 'tbal_name', cascade=>TRUE);

统计信息说明

统计信息具体包含哪些内容

收集统计信息时,达梦主要会记录这些“数字”:

  1. 表级信息(整张表的概况)
    • 表的总行数(NUM_ROWS)
    • 表占用的块数 / 页数
    • 平均行长度(AVG_ROW_LEN)
      这些信息让优化器知道:这张表是“小表”还是“大表”,适合全表扫描还是索引访问。
  2. 列级信息(每列的分布情况)
    • 列的不同值个数(distinct 值数量 / 基数)
    • 最小值、最大值
    • 是否有 NULL、NULL 的数量
    • 更重要的是:直方图(Histogram)
      直方图就是把这个列的值按区间分桶,统计每个桶里有多少行,比如:
    • PLACE_CODE = ‘340000000000’ 这类值占了全表的 10% 还是 80%?
    • CREATE_TIME 在某个时间范围内有多少条记录?
      这些信息直接影响优化器对“过滤条件”的估算。
  3. 索引级信息(每个索引的概况)
    • 索引的高度(B+树的深度)
    • 索引叶子块的个数
    • 聚簇因子(Clustering Factor,反映索引顺序和表数据物理顺序的吻合程度)
      这些信息让优化器知道:通过这个索引查找,大概要读多少块,是不是比全表扫描更划算。

作用

帮助判断“走索引”还是“全表扫描”。比如:

  • 表有 100 万行
  • WHERE 条件:某个值只占 1 万行(1%)
    统计信息告诉优化器:“这个条件过滤掉 99% 的数据,很适合走索引。”
    于是 CBO(基于代价的优化器) 选择“索引范围扫描 + 少量回表”。如果统计信息不准(比如根本没收集,统计信息里还是“只有 100 行”的旧数据),优化器可能误以为这个表很小,直接全表扫描,结果扫了 100 万行,变得非常慢。

帮助决定“关联顺序”和“关联方式”。多表关联时,优化器要算:

  • 哪张表作为“驱动表”(先查的那张)
  • 用 Nested Loop(嵌套循环)还是 Hash Join 还是 Merge Join
    比如:
    • 表 A 只有 100 行
    • 表 B 有 1000 万行
    • A 和 B 通过某个字段关联
      统计信息会告诉优化器:A 很小,B 很大,那就应该用 A 当驱动表,对 B 走索引或做 Hash Join。如果没有统计信息,优化器可能错误地让 1000 万行的表当驱动表,然后对 100 行的小表反复访问,结果极慢。

帮助估算“过滤后的行数”,决定是否用某些高级特性。

例如:你的查询里有 WHERE PLACE_CODE like '340000000000%' AND CREATE_TIME BETWEEN ...
优化器需要知道:
- ‘340000000000’ 这种前缀大概占多少比例?
- 这个时间区间大概有多少行?
只有通过“列统计信息 + 直方图”,它才能相对准确地估算“过滤后的行数”,进而判断:
- 用(PLACE_CODE, CREATE_TIME)索引更合适
- 还是只用 CREATE_TIME 索引更合适
- 甚至根本不用索引,直接全表扫描更快
我们这条 3 秒的 SQL,就是优化器在没有准确统计信息的情况下,误判了行数和分布,错误地走了“先按时间扫、再回表过滤地区”的低效路径。

帮助识别“倾斜数据”,避免“误判”某个条件没过滤能力。所谓“数据倾斜”,比如:

  • 某个地区代码占了全表的 90%
  • 其他 9 个地区一起只占 10%
    这种情况,直方图尤为重要。
    有了直方图,优化器会知道:
    • 对“占 90% 的地区”走索引没意义(反正几乎全是)
    • 对“占 0.1% 的地区”走索引非常划算
http://www.jsqmd.com/news/407239/

相关文章:

  • 不用去照相馆,证件照也可以在线自己做 - 博客湾
  • 2026陕西舞东方教育深度解析——专注舞蹈艺考、统考集训与校考冲刺的三十一载育人实践 - 深度智识库
  • 2026金属材料分析机构推荐榜:四大权威服务商深度测评,精准匹配制造企业需求 - 速递信息
  • 2026年别墅电梯公司权威推荐:推荐别墅电梯厂家、旧小区旧楼加装电梯最新政策、旧楼加装电梯7层高大约需要多少钱选择指南 - 优质品牌商家
  • 打卡信奥刷题(2864)用C++实现信奥题 P4939 Agent2
  • oii一键生成动漫,oiioii一键生成动漫,oii邀请码,oiioii邀请码2026年2月24日最新
  • 2.24
  • 2026年热门的离婚律师/光谷离婚律师实用推荐平台 - 行业平台推荐
  • 2026年2月太原装修/装潢/全屋整装/公司全面评测分析 - 2026年企业推荐榜
  • 直通智推时代:官方合作入口与联系方式一站速查 - 速递信息
  • 2026年评价高的初效平板式过滤器/苏州空气过滤器厂家综合实力参考(2026) - 行业平台推荐
  • 粉末冶金钨钢模具破局:中材3S方法论开启高价值制造新时代 - 速递信息
  • 2026年塑料模板厂家权威推荐榜:现浇塑料模板厂家/现浇水沟塑钢模板/箱涵塑料模板/隧道电缆沟塑料模板/选择指南 - 优质品牌商家
  • XState状态深度解析
  • 市政/文旅/园区必备:四川苹果仓厂家怎么选?这5家值得闭眼入 - 深度智识库
  • 2026年评价高的锅炉/江苏烧结余热锅炉品牌厂家推荐 - 行业平台推荐
  • 2026年2月太原旧房翻新/新房装修公司竞争格局深度分析 - 2026年企业推荐榜
  • 让电机更聪明:变频器控制柜制造如何成为工业节能核心?
  • 留学生求职机构测评:五大维度实测解析(选机构必看) - Matthewmx
  • XState状态机深度解析
  • 电机:07 永磁同步电机(PMSM):电动车时代的王者
  • 实测对比:多款高三寒假语数英衔接教辅优劣分析,期中抢分卷/入学分班卷/期中提分卷/会考练习册,寒暑假衔接教辅机构品牌推荐 - 品牌推荐师
  • 2026年靠谱的玄金瓦厂家/广西玄金瓦生产商实力参考哪家质量好(更新) - 行业平台推荐
  • 什么是模型管理平台?OpenCSG如何构建企业级AI基础设施
  • 春招、秋招、实习三线博弈:留学生高端求职进入“通道竞争”时代 - Matthewmx
  • 什么是模型管理平台?2026企业级大模型管理系统全解析
  • 2026年比较好的湖南彩石瓦/高端彩石瓦真实参考销售厂家参考怎么选 - 行业平台推荐
  • 计算机毕设Java基于微信小程序的个性化音乐系统 基于SpringBoot与微信小程序的智能音乐推荐与社交分享平台 微信小程序生态下的用户定制化音乐流媒体服务系统
  • 从脚本到服务:FC2视频下载器的架构演进之路
  • 2026企业级模型管理平台如何打通数据与智能体?OpenCSG AgenticHub全栈解析