------------------------------------------------------------------------
-- Author : HappyFlyStone
-- Date
: 2009-09-05 00:57:10
-- Version: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
--
Apr 14 2006 01:12:25
--
Copyright (c) 1988-2005 Microsoft Corporation
--
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
--
------------------------------------------------------------------------
IF
EXISTS
(
SELECT
name
FROM
sysobjects WHERE
id =
OBJECT_ID
(
'sp_DropAllIndex'
)
AND
OBJECTPROPERTY
(
OBJECT_ID
(
'sp_DropAllIndex'
),
'IsProcedure'
)=
1)
DROP
PROCEDURE
sp_DropAllIndex
GO
CREATE
PROCEDURE
sp_DropAllIndex
@tabname nvarchar
(
150)
--
需要删除统计或索引的表
AS
BEGIN
DECLARE
@drop_idx_string nvarchar
(
4000)
--
存放动态组织而成的
DROPS
index/stats
语法
SET
NOCOUNT
ON
--
check table
IF
NOT
EXISTS
(
SELECT
1
FROM
INFORMATION_SCHEMA.TABLES
WHERE
table_type =
'base table'
AND
table_name =
@tabname)
BEGIN
RAISERROR
(
N'------当前表
:
''%s'' 不存在!'
,
16,
1,
@tabname)
RETURN
(
1)
END
SET
@tabname =
OBJECT_ID
(
@tabname)
IF
EXISTS
(
SELECT
1
FROM
sysindexes
WHERE
id=
@tabname AND
indid BETWEEN
1 AND
254
AND
status IN
(
96,
10485856,
8388704))
BEGIN
SELECT
@drop_idx_string =
isnull
(
@drop_idx_string+
';'
,
''
)
+
(
'DROP STATISTICS '
+
OBJECT_NAME
(
@tabname)+
'.'
+
name
)
FROM
sysindexes
WHERE
id=
@tabname AND
indid BETWEEN
1 AND
254
AND
status IN
(
96,
10485856,
8388704)
END
IF
Len
(
@drop_idx_string)
>
0
BEGIN
PRINT
N'------
统计删除列表
------'
PRINT
@drop_idx_string+
';'
EXECUTE
(
@drop_idx_string+
';'
)
PRINT
N'------
统计删除结束
------'
END
IF
EXISTS
(
SELECT
1 FROM
sysindexes
WHERE
id=
@tabname AND
indid BETWEEN
1 AND
254
AND
status NOT
IN
(
96,
10485856,
8388704))
BEGIN
SET
@drop_idx_string =
NULL
select
@drop_idx_string =
isnull
(
@drop_idx_string+
';'
+
CHAR
(
13)+
CHAR
(
10),
''
)
+
(
'DROP INDEX '
+
OBJECT_NAME
(
@tabname)+
'.'
+
name
)
FROM
sysindexes
WHERE
id=
@tabname AND
indid BETWEEN
1 AND
254
AND
status NOT
IN
(
96,
10485856,
8388704)
AND
OBJECTPROPERTY
(
OBJECT_ID
(
name
),
'IsConstraint'
)
IS
NULL
--
过程不处理
CONSTRAINTS
END
PRINT
N'------
索引删除列表
------'
PRINT
(
@drop_idx_string+
';'
)
EXEC
(
@drop_idx_string+
';'
)
PRINT
(
'......'
+
CHAR
(
13)+
CHAR
(
10)+
'......'
)
PRINT
N'------
索引删除结束
------'
END
GO
create
clustered
index
idx_id on
ta(
id)
create
index
idx_col on
ta(
col)
go
sp_DropAllIndex 'ta'
/*
------
索引删除列表
------
DROP INDEX ta.idx_id;
DROP INDEX ta.idx_col;
......
......
------
索引删除结束
------
*/
本文转自:http://blog.csdn.net/happyflystone/archive/2009/09/05/4521568.aspx
分享到:
相关推荐
这个过程需要指定索引的所有者、索引名和估算百分比等参数。例如: ```sql BEGIN DBMS_STATS.GATHER_INDEX_STATS ( ownname => 'TEST', indname => 'IDX_STUDENT_BIRTH', estimate_percent => DBMS_STATS.AUTO_...
通过将大型表分割成较小、更易管理和操作的分区,可以提高查询性能,简化维护工作,并优化备份与恢复过程。以下是对Oracle分区表和分区索引的深入解析: 1. **何时使用分区**: - 当表的数据量超过2GB时,分区有助...
1. **主索引**:具有唯一性的索引,每个记录的索引值都是唯一的,自由表无法建立主索引,一个数据库表只能有一个主索引。 2. **候选索引**:与主索引类似,但一个表可以有多个候选索引。 3. **唯一索引**:允许索引...
在Oracle中删除表中的重复数据是一个涉及到数据安全性和效率的关键操作。通过上述步骤,可以有效地清除重复数据,同时保护原表的完整性和结构。然而,在实际操作中,应根据具体场景和需求调整SQL语句,比如选择合适...
- 表move是指将一个表从一个位置移动到另一个位置的过程,通常发生在表空间重组、表重命名等场景下。 - 在表move过程中,Oracle数据库可能会重新构建索引结构,以适应新的表布局。 2. **索引失效的原因**: - **...
位图索引则适合于值分布稀疏的列,例如性别、部门等分类较少的字段,位图索引将每个值映射为一个位,节省存储空间。函数索引允许在列上应用函数后再创建索引,如对日期字段进行年份提取后建索引。唯一索引则确保索引...
聚集索引决定了数据在表中的物理存储顺序,一个表只能有一个聚集索引。非聚集索引包含索引键和指向数据行的指针,表可以有多个非聚集索引。索引的作用是为了加速数据检索过程,提高数据库查询的性能。 2. 索引的...
#### 二、表和索引统计信息的收集 收集统计信息对于优化查询计划至关重要。可以通过以下几种方式收集统计信息: 1. **使用`ANALYZE TABLE`命令**: ```sql ANALYZE TABLE GD_YX_ZYTDYH COMPUTE STATISTICS FOR ...
数据量通常指的是数据库中所有表占用的磁盘空间总和,包括索引、数据行、日志文件等。统计数据量可以帮助我们识别哪些表占用了大量空间,以便进行进一步的分析和优化。 **CONCAT函数解读** CONCAT函数是MySQL中的...
组合索引是由多个列组成的索引,例如在一个`buy_log`表中可以有两个索引`user_id`和`(user_id, buy_date)`。考虑以下SQL语句: ```sql SELECT * FROM buy_log FORCE INDEX (user_id) WHERE user_id = 1 ORDER BY buy...
分区表是指将一个大的物理表分割成多个较小的部分(即分区),这些部分可以独立管理,并存储在不同的位置。通过合理地设计分区策略,可以显著提高查询性能,简化管理和维护工作。 ### 分区类型 #### Range分区 ...
首先创建一个新表并插入去重后的数据,然后删除旧表,并将新表重命名为旧表的名字,以此达到删除重复记录的效果。 **SQL示例代码:** ```sql SELECT DISTINCT * INTO new_table FROM old_table ORDER BY ...; DROP...
- **聚簇索引(Clustered Index)**:每个表只能有一个聚簇索引,它决定了表中数据的物理存储顺序。 - **非聚簇索引(Nonclustered Index)**:可以有多个非聚簇索引,它们不改变表中数据的存储顺序,而是指向聚簇索引...
1. **创建全文目录**:首先,需要在服务器上创建一个全文目录,它是存储索引和相关元数据的地方。 2. **启用全文服务**:在SQL Server服务管理器中,确保全文服务已启动,并设置正确的启动账户。 3. **创建全文索引*...
《第5章 数据排序、检索、统计和多表操作》主要涵盖了在数据库管理中至关重要的几个方面,包括数据的分类排序、索引排序、数据检索、数据统计以及多个表的操作。这些内容对于理解和高效处理数据库至关重要。 5.1 ...
1. 创建索引:使用CREATE INDEX语句,指定索引名、表名和要索引的列。 ```sql CREATE INDEX idx_example ON table_name(column_name); ``` 2. 删除索引:使用DROP INDEX语句。 ```sql DROP INDEX idx_example; ``` 3...
- **定期分析和优化索引**:使用`ANALYZE TABLE`和`OPTIMIZE TABLE`等命令,确保索引统计信息是最新的,并且消除碎片,提高查询效率。 - **利用索引提示**:在复杂的查询中,可以使用`FORCE INDEX`、`USE INDEX`等...
要批量重建所有索引,可以编写一个存储过程,遍历所有的表和索引,逐个执行重建操作。"SQL重建索引.txt"可能就包含了这样的脚本。 4. **考虑重建选项**:重建索引时,可以指定填充因子(填充因子决定了新索引页的...