SQLServer2000数据库中如何重建索引
在数据库中创建索引时,查询所使⽤的索引信息存储在索引页中。连续索引页由从⼀个页到下⼀个页的指针链接在⼀起。当对数据的更改影响到索引时,索引中的信息可能会在数据库中分散开来。重建索引可以重新组织索引数据(对于聚集索引还包括表数据)的存储,清除碎⽚。这可通过减少获得请求数据所需的页读取数来提⾼磁盘性能。
在 Microsoft® SQL Server™ 2000 中,如果要⽤⼀个步骤重新创建索引,⽽不想删除旧索引并重新创建同⼀索引,则使⽤ CREATE INDEX 语句的 DROP_EXISTING ⼦句可以提⾼效率。这⼀优点既适⽤于聚集索引也适⽤于⾮聚集索引。
以删除旧索引然后重新创建同⼀索引的⽅式重建聚集索引,是⼀种昂贵的⽅法,因为所有⼆级索引都使⽤聚集键指向数据⾏。如果只是删除聚集索引然后重新创建,则会使所有⾮聚集索引都被删除和重新创建两次。⼀旦删除聚集索引并再次重建该索引,就会发⽣这种情形。通过在⼀个步骤中重新创建索引,可以避免这⼀昂贵的做法。在⼀个步骤中重新创建索引时,会告诉 SQL Server 要重新组织现有索引,避免了删除和重新创建⾮聚集索引这些不必要的⼯作。该⽅法的另⼀个重要优点是可以使⽤现有索引中的数据排序次序,从⽽避免了对数据重新排序。这对于聚集索引和⾮聚集索引都⼗分有⽤,可以显著减少重建索引的成本。另外,通过使⽤ DBCC DBREINDEX 语句,SQL Server 还允许对⼀个表重建(在⼀个步骤中)⼀个或多个索引,⽽不必单独重建每个索引。
DBCC DBREINDEX 也可⽤于重建执⾏ PRIMARY KEY 或 UNIQUE 约束的索引,⽽不必删除并创建这些约束(因为对于为执⾏ PRIMARY KEY 或 UNIQUE 约束⽽创建的索引,必须先删除该约束,然后才能删除该索引)。例如,可能需要在 PRIMARY KEY 约束上重建⼀个索引,以便为该索引重建给定的填充因⼦。
⼀、如何在SQL中启⽤全⽂检索功能
1、验证全⽂检索服务是否安装
通过储存过程FULLTEXTSERVICEPROPERTY(返回有关全⽂服务级别属性的信息)来验证搜索服务(全⽂组件)是否安装。如Select fulltextserviceproperty (‘IsFullTextInstalled’):返回1表⽰已安装全⽂组件;返回0表⽰未安装全⽂组件;返回Null表⽰输⼊⽆效或发⽣错误。
2、启动全⽂检索服务(MircoSoft Search)
3、打开数据库全⽂索引的⽀持
为全⽂索引启⽤数据库:
Use Northwind
Exec sp_fulltext_database  ‘enable’
从数据库中删除所有⽬录:
Use Northwind
Exec sp_fulltext_database ‘disable’
⼆、建⽴全⽂⽬录
1、创建全⽂⽬录
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', 'create'
2、重建全⽂⽬录
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', ' rebulid'
3、启动全⽂⽬录的填充
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', 'start_full'
4、停⽌全⽂⽬录的填充
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', 'stop'
5、删除全⽂⽬录
如何安装sql server 2000Use Northwind
PK_Products
Exec sp_fulltext_catalog 'ft_ Catalog ', 'drop'
三、为表建⽴全⽂索引数据元
1、建⽴的唯⼀索引
Use Northwind
Exec sp_fulltext_table 'Products','create', 'ft_ Catalog', ' PK_Products '
2、设置全⽂索引列名
Use Northwind
Exec sp_fulltext_table 'Products','create', 'ft_ Catalog', ' PK_Products '
3、设置全⽂索引列名
Use Northwind
Exec sp_fulltext_column ' Products ', ProductName', 'add'
Go
Exec sp_fulltext_column ' Products ', QuantityPerUnit', 'add'
Go
4、激活全⽂索引
Use Northwind
Exec sp_fulltext_table 'Products','activate
5、填充全⽂索引⽬录
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', 'start_full'
四、使⽤Transact-SQL进⾏全⽂检索,我们使⽤CONTAINS、FREETEXT等谓词
1、检索ProductName中,即包含b⼜包含c的所有列
Use Northwind
SELECT *
FROM Products
WHERE CONTAINS(ProductName, '"c*" and "b*" ')
2、检索ProductName中,即包含chai chang tofu之⼀的所有列
Use Northwind
SELECT *
FROM Products
WHERE FREETEXT(ProductName, 'chai chang tofu ')
五、全⽂查询有关的系统存储过程
(1)启动数据库的全⽂处理功能(sp_fulltext_datebase);
(2)建⽴全⽂⽬录(sp_fulltext_catalog);
(3)在全⽂⽬录中注册需要全⽂索引的表(sp_fulltext_table);
(4)指出表中需要全⽂检索的列名(sp_fulltext_column)
(5)为表创建全⽂索引(sp_fulltext_table);
(6)填充全⽂索引(sp_fulltext_catalog)。