sqlserver时间字段索引失效,重建后索引又正常了

news2024/12/22 23:06:27

文章目录

  • 前言
    • 索引相关操作
      • 1 、查看全部索引信息
      • 2 、重建所有表索引
      • 3 、查看某个表索引信息
      • 4 、重建某个表索引
    • 查询索引字段说明
    • 执行修复索引字段


前言

这几天被一个项目搞得烦死了,客户老是反馈后台查询前一天注册的用户数据失败,看了错误日志,请求超时,数据库查不出来数据
把错误sql拿去服务器上直接执行,发现花了1分钟左右才出结果
然后找了半天,也没发现问题,最后把用户创建时间这个字段的索引删除,重新建了一个,发现好了。
但是第三天,客户查询第二天的数据的时候发现有查不出来了,发现索引还在,但是他只有时间条件查询我创建索引前的时间才很快,创建后的数据好像没有加索引。
查了半天没啥结果,向华为云(用的华为云rds)提工单询问也没啥结果。
最后,我们老板说之前他好像遇到过这个问题,给了一个存储过程,修复所有索引,发现确实可以查出来了。
但是不是很清楚这个修复索引的存储过程和我删了索引重新建有啥区别。
反正现在写了一个线程,每天5.30执行那个存储过程,修复索引……
在这里插入图片描述


索引相关操作

1 、查看全部索引信息

DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES

2 、重建所有表索引

Go
DECLARE @DBCCString NVARCHAR(1000)
DECLARE @TableName VARCHAR(100)
DECLARE Cur_Index CURSOR
FOR
SELECT Name AS TblName
FROM sysobjects
WHERE xType=‘U’
ORDER BY TblName
FOR READ ONLY
OPEN Cur_Index
FETCH NEXT FROM Cur_Index
INTO @TableName
WHILE @@FETCH_STATUS=0
BEGIN
SET @DBCCString = ‘DBCC DBREINDEX(@TblName,’‘’‘)WITH NO_INFOMSGS’
EXEC SP_EXECUTESQL @DBCCString,N’@TblName VARCHAR(100)', @TableName
PRINT ‘重建表’ + @TableName +‘的索引…OK!’
FETCH NEXT FROM Cur_Index INTO @TableName
END
CLOSE Cur_Index
DEALLOCATE Cur_Index
PRINT ‘操作完成!’
go


优化了一下,其实我只需要重建用户表创建时间那个字段的索引就好了,不需要整个数据库索引都重写

3 、查看某个表索引信息

DBCC SHOWCONTIG (usr_users) WITH TABLERESULTS, ALL_INDEXES

4 、重建某个表索引

DBCC DBREINDEX(‘usr_users’)


查询索引字段说明

DBCC SHOWCONTIG
是显示指定的表的数据和索引的碎片信息。

Page Scanned-扫描页数:如果你知道行的近似尺寸和表或索引里的行数,那么你可以估计出索引里的页数。看看扫描页数,如果明显比你估计的页数要高,说明存在内部碎片。
Extents Scanned-扫描扩展盘区数:用扫描页数除以8,四舍五入到下一个最高值。该值应该和DBCC SHOWCONTIG返回的扫描扩展盘区数一致。如果DBCC SHOWCONTIG返回的数高,说明存在外部碎片。碎片的严重程度依赖于刚才显示的值比估计值高多少。
Extent Switches-扩展盘区开关数:该数应该等于扫描扩展盘区数减1。高了则说明有外部碎片。
Avg. Pages per Extent-每个扩展盘区上的平均页数:该数是扫描页数除以扫描扩展盘区数,一般是8。小于8说明有外部碎片。
Scan Density [Best Count:Actual Count]-扫描密度[最佳值:实际值]:DBCC SHOWCONTIG返回最有用的一个百分比。这是扩展盘区的最佳值和实际值的比率。该百分比应该尽可能靠近100%。低了则说明有外部碎片。

Logical Scan Fragmentation-逻辑扫描碎片:无序页的百分比。该百分比应该在0%到10%之间,高了则说明有外部碎片。
Extent Scan Fragmentation-扩展盘区扫描碎片:无序扩展盘区在扫描索引叶级页中所占的百分比。该百分比应该是0%,高了则说明有外部碎片。
Avg. Bytes Free per Page-每页上的平均可用字节数:所扫描的页上的平均可用字节数。越高说明有内部碎片,不过在你用这个数字决定是否有内部碎片之前,应该考虑fill factor(填充因子)。
Avg. Page Density (full)-平均页密度(完整):每页上的平均可用字节数的百分比的相反数。低的百分比说明有内部碎片。

执行修复索引字段

DBCC DBREINDEX( table_name,index_name,fillfactor)

table_name
重新生成指定索引的表名。
index_name
要重新生成的索引名。索引名称必须符合标识符规则。如果指定了 index_name,则必须指定 table_name。如果未指定 index_name 或将其指定为 ‘’(一对单引号),则重新生成表的所有索引。
fillfactor
在创建或重新生成索引时,每个索引页上用于存储数据的空间百分比。在创建索引时,fillfactor 将替换填充因子,从而成为该索引以及重新生成的任何其他非聚集索引(因为已经重新生成了聚集索引)的新默认值。当 fillfactor 为 0 时,DBCC DBREINDEX 将使用上次为索引指定的填充因子值。该值存储在 sys.indexes 目录视图中。


参考:
DBCC DBREINDEX 对指定数据库中的表重新生成一个或多个索引
sqlserver重建索引
SQLServer重建索引【博客园】

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

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

相关文章

【Java面试】能说说你对volatile关键字的理解吗?

文章目录volatile能否保证线程安全?原子性可见性有序性volatile能否保证线程安全? 下文使用到了javap命令进行class文件的反汇编来查看字节码,如果想要了解的可以学习一下javap命令。 什么是javap命令 javap命令的参数 要解决这个问题首先要…

【数据库】数据库的慢查询问题

现象: 在压测过程中发现接口返回数据非常慢,甚至超时,页面加载不出数据 问题定位:如果有慢查询怎么恢复? 1.查看服务日志,打印连接数据库超时,接口返回超时 查看数据库所在节点cpu占用很高使…

夯实算法-跳跃游戏

题目:LeetCode 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输入: nums [2,3,1,1,4] 输出: tru…

【测试沉思录】23. 如何实现基于场景的接口自动化测试用例?

作者:陈爱娇 编辑:毕小烦 自动化本身是为了提高工作效率,不论选择何种框架,何种开发语言,我们最终想实现的效果,就是让大家用最少的代码,最小的投入,完成自动化测试的工作。 基于这…

EMQ 宣布推出 LF Edge eKuiper 全新 Logo 标识

全球领先的开源物联网数据基础设施软件供应商 EMQ 映云科技宣布,即日起,将正式启用全新的 LF Edge eKuiper(以下简称 eKuiper)产品 Logo。焕然一新的 eKuiper 产品 Logo 标志着 EMQ 在不断提升品牌全球化战略之上,对于打造高性能、高可用、高安全的世界级开源软件产品的极致追求…

关于密码设置

使用一个密码并在数据泄漏时保护自己的其它账号 关于密码 现在好多软件,好多网站都需要我们设置密码,这个时候我们的处理办法一般分为2种。 对不同的软件设置不同的密码,这种理论上是最安全的,但是记不住啊,所以不实…

Letbook Cookbook题单——数组二分与双指针

Letbook Cookbook题单——数组二分与双指针 1. 两数之和 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。…

Locust学习记录5-任务属性【Task】

Task 当负载测试开始时,将为每个模拟用户创建一个User类的实例,他们将开始在自己的绿色线程中运行。当这些用户运行时,他们选择他们执行的任务,休眠一段时间,然后选择一个新任务。 这些任务时普通的python可调用文件…

windows环境下python连接openGauss数据库

文章目录一、python 介绍二、Python下载及安装三、openGauss Connectors (Psycopg2) 介绍四、openGauss Connectors (Psycopg2)下载并初始化五、连接并访问openGauss数据库六、问题总结(FAQ)一、python 介绍…

Maven学习笔记

Maven Maven是一个项目管理工具依赖管理 传统工程中我们直接把jar包放在项目中maven工程真正的jar包放在仓库中,项目中只防止jar包的坐标 一键构建 maven自身集成了tomcat插件,可以对项目进行编译、测试、打包、安装、发布等操作 仓库的种类 本地仓库远程…

计算机毕业论文java毕业设计选题源代码ssm校园兼职系统|求职招聘系统

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 3.1 需求分析 校园兼职系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能&am…

人工智能与机器学习

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 人工智能与机器学习📝人工智能相关概念☞什么是人工智能、机器学习、深度学习☞人工智能发…

思科防火墙NAT——实验

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 1.实验 防火墙配置 其他配置 前言 本章将会讲解思科NAT配置的…

记一次 .NET 某工控软件 内存泄露分析

一:背景 1.讲故事 上个月 .NET调试训练营 里的一位老朋友给我发了一个 8G 的dump文件,说他的程序内存泄露了,一时也没找出来是哪里的问题,让我帮忙看下到底是怎么回事,毕竟有了一些调试功底也没分析出来,…

Hash与ZSet的常用命令以及其底层数据结构

目录hash类型命令hsethgethmsethmgethgetallhsetnxhdelhexitshincrby与hincrbyfloathkeys与hvalshlenhstrlen有序set型命令zaddzrange 与zrevrangezrangebyscore与zrevrangebyscorezcardzcountzscorezincrbyzrank 与 zrevrankzremzremrangebyrankzremrangebyscorezrangebylexzl…

MySQL学习笔记(十四)索引失效有哪些情况?

1.表和数据 CREATE TABLE t_user (id bigint(32) NOT NULL AUTO_INCREMENT,user_name varchar(40) DEFAULT NULL COMMENT 用户名,user_code varchar(40) DEFAULT NULL COMMENT 用户编号,phone varchar(11) DEFAULT NULL COMMENT 电话,age tinyint(3) DEFAULT NULL COMMENT 年龄…

微机----------------中断技术

目录 中断概述中断处理过程中断请求中断响应中断处理8086/8088中断中断类型中断优先级顺序⭐中断向量表中断处理过程中断概述 中断: 当CPU执行程序时,由于随机的事件引起CPU暂时停止正在执行的程序,而转去执行中断服务程序,处理完后又返回被终止的程序断点处继续执行,这个…

Bug系列路径规划算法原理介绍(四)——I-BUG 算法

本系列文章主要对Bug类路径规划算法的原理进行介绍,在本系列的第一篇文章中按照时间顺序梳理了自1986年至2018年Bug类路径规划算法的发展,整理了13种BUG系列中的典型算法,从本系列的第二篇文章开始依次详细介绍了其中具有代表性的BUG1、BUG2、…

数学基础从高一开始2、集合间的基本关系

高中数学人教 A 版必修一 集合间的基本关系 学习目标: (1)初步理解集合之间的包含与相等的含义; (2)能识别给定集合的子集和真子案,了解空集含义: (3)能进行自然语言、图形语言(Venn 图)、符号语言闻的转换,积萦抽象思维的经验, …

递归算法(及其衍生算法:缓存,分治,回溯)

文章目录一、初识递归二、缓存三、分治四、回溯一、初识递归 递归函数 终止条件 递归关系 终止条件: 当大问题被拆解成能轻松解决的小问题时,运行终止条件中的逻辑 递归关系: 定义如何将大问题拆解为小问题 例子:小名跑步。 …