• 全文索引学习


    create table products
    (
        pid int primary key,
        [no] varchar(100) unique not null,
        pname varchar(100),
        shijian timestamp
    )
    insert products select 1,'pro1','张三'
    insert products select 2,'pro2','李四'
    insert products select 3,'pro3','王五'
    insert products select 4,'pro4','赵六'
    insert products select 5,'pro5','楚七'
    insert products select 6,'pro6','康璐妮'
    insert products select 7,'pro7','文胸'
    insert products select 8,'pro8','内衣aa'
    insert products select 9,'pro9','456内衣AA'
    insert products select 10,'pro10','wqaa'
    insert products select 11,'pro11','中国aa'
    insert products(pid,[no],pname) select 11189,'pro1333','老梅aa'
    insert products(pid,[no],pname) select 11190,'pro1334','李aa'
    insert products(pid,[no],pname) select 11195,'pro133336','刚aa'
    insert products(pid,[no],pname) select 11196,'pro133337','特aa'
    insert products(pid,[no],pname) select 111907,'pro133338','丽丽aa'

    declare @i int
    set @i=1
    while(@i<100000)
    begin
        set @i=@i+1
        insert products select @i,'P'+cast(@i as varchar(10)),'BB'+cast(@i as varchar(10)),null
    end

    select * from products
    delete products where pid<180000
    drop table products


    --打开数据库全文索引的支持
    execute sp_fulltext_database 'enable'
     go
    --建立全文目录ft_titles
    execute sp_fulltext_catalog 'myfulltext','create','E:\FullText'   --全文目录名,操作方式,路径
     go

    --为products表建立全文索引数据元,UPKCL_titleidind是主键所建立的唯一索引,可由sp_help products得知
    execute sp_fulltext_table 'products','create', 'myfulltext', 'PK__products__1367E606'  --表名,操作方式,全文目录名,唯一键键名(主键也可以)
    go
    --execute sp_fulltext_table 'products','drop' 删除全文索引对表标记


    --设置全文索引列名
    exec sp_fulltext_column 'products', 'no', 'add'
    go
    exec sp_fulltext_column 'products', 'pname', 'add'
    go


    --建立全文索引
    exec sp_fulltext_table 'products', 'activate' --激活表,也就是将表注册在文件系统中的全文目录
    exec sp_fulltext_table 'products', 'start_full' --使用表的完全填充
    exec sp_fulltext_table 'products', 'start_incremental' --使用表的增量填充
    --下面两句是启用更改跟踪,如果对表添加完数据后,启用更改跟踪,全文索引会自动进行完全填充
    exec sp_fulltext_table 'products', 'start_change_tracking' --启动全文索引的增量填充。如果该表没有时间戳(猜测其实就是表里没有timestamp列),那么就启动全文索引的完全填充。开始跟踪表发生的变化。
    exec sp_fulltext_table 'products', 'Start_background_updateindex'

    --下面两句是停止更改跟踪
    exec sp_fulltext_table 'products', 'stop_change_tracking'
    exec sp_fulltext_table 'products', 'stop_background_updateindex'
    go


    --填充全文索引目录
    --使用完全填充
    exec sp_fulltext_catalog 'myfulltext', 'start_full'--使用目录的完全填充
    go
    --使用增量填充,条件是全文索引的表中存在一个 timestamp 列
    exec sp_fulltext_catalog 'myfulltext', 'start_incremental'
    --从文件系统中删除现有的全文目录,然后重建全文目录,并使该全文目录与所有带有全文索引引用的表重新建立关联。也就是删除全文目录利多索引
    exec sp_fulltext_catalog 'myfulltext', 'Rebuild'
    go

    --查询全文索引目录填充状态
    declare @t int
    select fulltextcatalogproperty('myfulltext','populateStatus')

    select fulltextcatalogproperty('myfulltext','PopulateCompletionAge')



    select * from products
    where contains(pname,'aa')


    declare @beginDate DateTime,@endDate DateTime
    set @beginDate=GETDATE()
    declare @i int
    while(1=1)
    begin
        select @i=fulltextcatalogproperty('myfulltext','populateStatus')
        if(@i=0)
        begin
            set @endDate=GETDATE()
            break
        end
    end
    print DATEDIFF(mm , @beginDate , @endDate )
    print DATEDIFF(ss , @beginDate , @endDate )

    --使用增量填充,耗费13秒左右
    --使用完全填充,耗费28秒左右
    select fulltextcatalogproperty('myfulltext','populateStatus')

    select * from products
    where contains(pname,'62')

    select * from products
    where pname like '%62%'

     

  • 相关阅读:
    git 使用命令
    Mac上部署Jenkins,用git插件更新项目代码时报错的记录
    pycharm找不到本项目中的其他包或模块
    小米8线刷pixel experience全过程记录
    python环境清理
    怎么实现无遮罩屏蔽某些按钮的点击事件
    ios 上 WebCamTexture尺寸是16X16
    关于月份拆分
    关于const let的使用
    关于promise,const函数的使用
  • 原文地址:https://www.cnblogs.com/mxw09/p/1886767.html
Copyright © 2020-2023  润新知