Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重建索引是否等同于删除和重新创建索引?

重建索引是否等同于删除和重新创建索引?
EN

Stack Overflow用户
提问于 2013-07-05 00:01:30
回答 1查看 763关注 0票数 1

昨天和今天,我花了几个小时试图排除一个特定的数据库查询为什么需要很长时间(3+分钟)才能在我在本地实例上还原的数据库上执行,而在生产服务器上只需要一小部分时间。(这不仅仅是生产服务器具有更高的规范的问题,因为以前对我的本地实例执行了相同的查询。)

我要试着用最好的方法来解释这个问题--意味着这篇文章可能有点长。这个查询非常直截了当:

代码语言:javascript
运行
AI代码解释
复制
SELECT [t0].[BillId], [t0].[CustomerId], [t0].[BillDate], [t0].[DueDate], 
[t0].[Period], [t0].[Total], [t0].[Balance], [t0].[DateCreated], [t0].[DateModified] --, other fields
FROM [dbo].[Bills] AS [t0]
WHERE ([t0].[Period] = 201307) AND (([t0].[DateModified] >= '2013-07-04 17:00:00.000') 
OR (([t0].[DateModified] < '2013-07-04 17:00:00.000') AND (EXISTS(
SELECT NULL AS [EMPTY]
FROM [dbo].[BillDetails] AS [t1]
WHERE [t1].[BillID] = [t0].[BillID] AND [t1].[DateModified] >= '2013-07-04 17:00:00.000'
))))

上面的查询返回与某个时间段相关联并自特定时间点以来已被修改的账单。如果票据的DateModified字段中的值晚于指定日期,或者相关子行(BillDetails)中的DateModified字段上的值晚于指定日期,则视为修改。我将在引用上述查询返回的结果时使用"delta“一词。

这有点奇怪,但在我的本地实例中,这个查询的执行似乎有点阻塞,特别是当没有增量时,即自上次指定的日期以来BillsBillDetails没有发生任何更改时。当需要返回增量时,查询只需一秒钟。在活动/生产数据库上,查询对这两种场景的响应都非常快。

我以前曾遇到过这个问题,但我没有记录我是如何解决的--很可能是因为我无法从我尝试过的许多事情中找出解决它的方法。在此期间,“阻塞”发生在生产数据库上,而我的本地实例却很好。我怀疑这和指数有关。

当它现在在我的本地实例上递归时,索引是主要的怀疑。我运行了我的实用程序脚本,用于重新组织平均碎片在5%到30 %之间的索引,以及重建平均碎片超过30 %的索引。这似乎没能解决问题。从那以后,我尝试了很多事情,但是修复它的方法是删除和重新创建Bills表上的非聚集索引。

我在Bills表上定义了三个非聚集索引,定义如下(或多或少):

代码语言:javascript
运行
AI代码解释
复制
NCI_IDX1 ([CustomerId] ASC)
NCI_IDX2 ([CustomerId] ASC, [Period] ASC, [BillId] ASC)
NCI_IDX3_Inc_Various ([Period] ASC, [DateModified] ASC, [BillId] ASC, [CustomerId] ASC) INCLUDE ([BillDate], [Total], [Balance] /* more fields */)

根据我的经验,当我试图解决这个问题时,我有几个问题困扰着我的头脑。

Q:重建索引是做什么的?它是否等同于手动删除和重新创建索引?

Q:将索引结果删除到与被删除的索引相关的统计数据中。索引的重建是否“刷新”或“重置”相关统计信息?

Q:考虑到查询优化器在选择执行计划时对统计信息的依赖,统计数据会对查询执行的阻塞负责吗?

Q:根据MSDN,不能使用DROP STATISTICS删除索引的统计信息。这是否意味着必须删除和重新创建索引才能重置统计信息?

注意: LINQ和C#是标记的,因为上面查询的来源是数据层中使用LINQtoSQL的C#应用程序。

EN

回答 1

Stack Overflow用户

发布于 2013-07-11 01:58:19

我发现这句话:

但是,索引重新组织根本不更新统计信息,因为整个表不是一次性分析的(只有具有碎片的页面才会被重新组织)。

在本文中:http://www.sqlskills.com/blogs/kimberly/the-accidental-dba-day-15-of-30-statistics-maintenance/

也许您的重构/重新组织索引的脚本只是重新组织了索引,但是没有重新构建 it (由于碎片较低),因此该索引上的统计数据变得“陈旧”。

这篇文章有一个很好的建议:

因此,如果您发现您的索引维护脚本正在定期地重新组织索引,那么您需要确保您也添加了统计维护。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17483945

复制
相关文章
Android震动器Vibrator调用
<uses-permission android:name="android.permission.VIBRATE"/>
程序员飞飞
2020/02/27
3.8K0
python 调用Google Tran
调用Google 翻译API进行翻译 #!/usr/bin/python #coding: UTF-8 import sys reload(sys) sys.setdefaultencoding('utf8') from xml.etree import ElementTree as ET #引入解析xml文件的模块 import re import urllib,urllib2 #引入接入网络接口API的模块 from socket import error as SocketE
py3study
2020/01/09
1.1K0
【设备】震动(Vibration)
概述 设备方向(Orientation) API 是通过vibrate()方法来实现的,通过该方法, 当有事件通知时,WEB应用程序可以让设备震动以达到提醒用户的目的。
Html5知典
2019/11/26
9400
安卓调用铃声、震动及设置Toast不重复弹出
直接上代码啦,调用铃声 MediaPlayer mp=new MediaPlayer(); try { mp.setDataSource(this, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); mp.prepare(); mp.start(); } catch (IOException e) {
用户4458175
2020/02/12
8120
jquery调用页面的方法
本文转载:http://www.cnblogs.com/chenxizhang/archive/2009/05/28/1491250.html
跟着阿笨一起玩NET
2018/09/19
3.2K0
Memos API 调用渲染页面
*更新:已把 Memos 剥离出一个完整的应用,可独立部署,到 eallion/memos.top 这个仓库下载部署到网站根目录即可。 *HUGO:如果使用的是 Hugo 博客框架,可以参考本站的方法:layouts/_default/memos.html
eallion
2023/03/07
3.4K0
Python3调用Google翻译
想弄一个批量翻译的东西,奈何百度翻译别人根本不研究,所以只能看谷歌翻译的了;这份代码的作者写的太聪明了,是真的很棒,思路很好,看到这样的代码简直年轻10岁
Elapse
2020/08/17
1.5K1
Typecho自定义调用如热门文章随机文章等
这是面向模板开发者的一篇干货文章,通过学习下面的两个事例,你可以通过调整数据库语句来实现自定义调用文章,如随机文章等。
泽泽社长
2023/04/17
6550
使用 Google Analytics 统计页面加载时间
Google 已经把页面加载速度纳入了页面排名影响因素,所以现在建立一个对搜索引擎友好的站点,除了要进行 SEO (页面优化和获取外链即)之外,还要考虑选择一个运行稳定而且速度不错的主机,以及网站程序的优化。
Denis
2023/04/14
1.7K0
使用 Google Analytics 统计页面加载时间
OpenHarmony/HarmonyOS震动模块的使用
@ohos.vibrator (振动) 作者:坚果,公众号:”大前端之旅“,哔哩哔哩,OpenHarmony布道师,OpenHarmony校源行开源大使,51CTO博客专家博主,阿里云博客专家。 导入模块 使用的时候,需要先导入对应的模块 import vibrator from '@ohos.vibrator'; 添加权限 然后需要添加权限 FA "reqPermissions": [ { "name": "ohos.permission.VIBRATE" } Stage "reque
徐建国
2023/02/23
6660
OpenHarmony/HarmonyOS震动模块的使用
小程序跨页面函数调用
此处注意一点:在export函数后面不要加逗号!虽然是在小程序里面,但是这是js文件,且不在page和component函数里面。
肥晨
2023/02/16
5K0
17-跨语言调用 Google ProtoBuf
定义其他复杂类型参考:https://blog.csdn.net/lijingjingchn/article/details/89466437
彼岸舞
2022/02/18
6160
17-跨语言调用 Google ProtoBuf
如何在Fortran中调用Python
Python是机器学习领域不断增长的通用语言。拥有一些非常棒的工具包,比如scikit-learn,tensorflow和pytorch。气候模式通常是使用Fortran实现的。那么我们应该将基于Python的机器学习迁移到Fortran模型中吗?数据科学领域可能会利用HTTP API(比如Flask)封装机器学习方法,但是HTTP在紧密耦合的系统(比如气候模式)中效率太低。因此,可以选择直接从Fortran中调用Python,直接通过RAM传递气候模式的状态,而不是通过高延迟的通信层,比如HTTP。
bugsuse
2020/04/21
6.2K0
如何在Google搜索到我的网站?
我需要解析的域名为 taixingyiji.com,我的域名解析商是CloudFlare
taixingyiji
2022/07/25
2.4K0
如何在Google搜索到我的网站?
37个常用Halo Java轻量博客页面模板标签调用(快速调用页面数据)
这篇文章应该算是Halo Java轻量博客程序的最后一篇主题开发的最后篇文章。在前面老蒋有整理到Halo页面调用、公共模板、全局变量的调用。这里我们是不是有需要页面模板标签的调用,比如最新文章、菜单、图片组的调用,这篇文章是比较全的37个Halo页面模板标签调用整理。
老蒋
2021/12/22
7800
最新C#调用Google即时翻译
主要是调用谷歌的翻译API进行翻译,WebRequest的请求,将获取到的翻译提取出来。下面上代码
kiki.
2022/09/29
7910
最新C#调用Google即时翻译
appinventor开发震动按摩APP
如图界面上,需要两个提示标签,两个按钮,两个滚动条;多媒体上需要一个音效播放器,一个计时器,一个对话框;布局上需要用到水平布局和垂直布局,具体怎么用简洁美观即可。 为两个标签分别设置“震动间隔”和“震动时长”内容,红色字体,滚动条分别设置最大值和最小值,单位是毫秒。
泽泽社长
2023/04/17
7410
appinventor开发震动按摩APP
如何在Google Web Toolkit环境下Getshell
Google Web Toolkit简称(GWT),是一款开源Java软件开发框架。今天这篇文章会介绍如何在这样的环境中通过注入表达式语句从而导致的高危漏洞。
Ms08067安全实验室
2020/02/21
7930
WordPress网站底部的自定页面(如:网站地图等)按钮美化教程
最近浏览博客,看到不少朋友这个底部的美化,我也觉得底部的这些按钮平平无奇,就想着用css设置一个样式,从而美化按钮方法,至此分享给大家。
文曦
2022/06/09
1.1K0
WordPress网站底部的自定页面(如:网站地图等)按钮美化教程
点击加载更多

相似问题

如何在调用方法后重定向google页面

23

翻动页面动画,如Google图书

13

Nifi减法后的震动转换

11

在长时间点击后震动

11

在android手机震动后停止服务?

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档