创建文本索引。
CREATE TEXT INDEX text-index-name ON [ owner.]table-name( column-name, ... ) [ IN dbspace-name ] [ CONFIGURATION [ owner.]text-configuration-name ] [ { IMMEDIATE REFRESH | MANUAL REFRESH | AUTO REFRESH [ EVERY integer { MINUTES | HOURS } ] ] }
IN 子句 此子句用于指定文本索引所处的 dbspace。如果未指定此子句,则会在 default_dbspace 选项指定的 dbspace 中创建文本索引。
CONFIGURATION 子句 此子句用于指定创建文本索引时要使用的文本配置文件。在未指定此子句的情况下,如果索引中的任意列为 NCHAR,则使用 default_nchar 文本配置对象;否则,使用 default_char 文本配置对象。
REFRESH 子句 此子句用于指定文本索引的刷新类型。如果未指定 REFRESH 子句,IMMEDIATE REFRESH 语句则作为缺省设置使用。以下是可指定的刷新类型的列表:
IMMEDIATE REFRESH 指定 IMMEDIATE REFRESH 以便在每次基础表中的变化影响到文本索引中的数据时刷新文本索引。
AUTO REFRESH 此子句用于通过内部服务器事件自动刷新实例化视图。使用 EVERY 次级子句来指定以分钟或小时为单位的刷新间隔。如果在未提供间隔信息的情况下指定 AUTO REFRESH,数据库服务器将每 60 分钟刷新一次文本索引。如果上次刷新时,sa_text_index_stats 系统过程返回的 pending_size 值超过文本索引大小的 20%,文本索引可能早于 AUTO REFRESH 子句指定的时间刷新。某个内部事件每分钟执行一次来针对所有 AUTO REFRESH 文本索引检查此条件。
MANUAL REFRESH 此子句用于指定手动刷新文本索引。
有关刷新类型的详细信息,请参见文本索引刷新类型。
不能在视图、实例化视图或临时表上创建文本索引。
IMMEDIATE REFRESH 文本索引会在创建时填充,并在此初始刷新过程中保存该表的独占锁。IMMEDIATE REFRESH 文本索引为使用快照隔离的查询提供完全支持。
MANUAL 和 AUTO REFRESH 文本索引必须在创建后进行初始化(刷新)。
AUTO REFRESH 文本索引的刷新使用隔离级别 0 扫描表。请参见isolation_level 选项 [数据库] [兼容性]。
文本索引创建后,不能将其更改到定义为 IMMEDIATE REFRESH,也不能将其从定义为 IMMEDIATE REFRESH 更改为其它值。如果要进行任何一种更改,必须先删除文本索引然后再重新创建。
可以选择使用 REFRESH TEXT INDEX 语句手动刷新 AUTO REFRESH 文本索引。请参见REFRESH TEXT INDEX 语句。
要查看文本索引及其引用的文本配置对象,请参见查看数据库中的文本索引。
必须是基础表的所有者,或者具有 DBA 权限,或者具有 REFERENCES 权限。
当存在使用 WITH HOLD 子句打开的使用语句快照或事务快照的游标时,不能执行此语句。请参见快照隔离。
自动提交
SQL/2003 服务商扩充。
以下示例在 demo 数据库中的 MarketingInformation 表的 Description 列上创建文本索引 myTxtIdx:使用 MarketingTextConfig 文本配置对象,并将刷新间隔设置为每 24 小时一次。
CREATE TEXT INDEX myTxtIdx ON MarketingInformation ( Description ) CONFIGURATION MarketingTextConfig AUTO REFRESH EVERY 24 HOURS; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |