位置: 编程技术 - 正文

SQLServer地址搜索性能优化(sql server搜索语句)

编辑:rootadmin

推荐整理分享SQLServer地址搜索性能优化(sql server搜索语句),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sql server搜索引擎,sqlserver搜索表名,sql server搜索引擎,sqlserver的url怎么找,sqlserver数据库地址,sql server搜索引擎,sql server搜索引擎,sql server搜索语句,内容如对您有帮助,希望把文章链接给更多的朋友!

这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享。

1.需求

1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内。

1.2 数据库地址表结构和数据:

表TBAddress

表数据

1.3 例子:

e.g. 给出一个字符串如“广 大”,找出地址全路径中包含有“广” 和“大”的所有地址,?果如下:

下面将通过4个方法来实现,再分析其中的性能优劣,然后选择一个比较优的方法。

2.创建表和插入数据

2.1 创建数据表TBAddress

create table

2.2 插入数据

附件: insert Data

Note: 数据有条,insert代码比较长,所以采用附件形式。

3.测试,方法1

3.1 分析:

a. 先搜索出包字段Name中含有“广”、“大”的所有地址记录存入临时表#tmp。

b. 再找出#tmp中各个地址到Level 1的全路径。

c. 根据步骤2所得的结果,筛选出包含有“广”和“大”的地址路径。

d. 根据步骤3筛选的结果,查询所有到Level n(n为没有子地址的层编号)的地址全路径。

3.2 存储过程代码:

procedure:up_SearchAddressByNameV0

3.3 执行查询:

共返回行记录。

3.4 客户端统计信息:

平均的执行耗时: 毫秒

4.测试,方法2

方法2是参照方法1,并借助全文索引来优化方法1中的步骤1。也就是在name列上建立全文索引,在步骤1中,通过全文索引搜索出包字段Name中含有“广”、“大”的所有地址记录存入临时表#tmp,其他步骤保持不变。

4.1 创建全文索引

SQLServer地址搜索性能优化(sql server搜索语句)

Note: 在Name列上创建全文索引使用的语言是简体中文(Simplified Chinese)

4.2 存储过程代码:

procedure:up_SearchAddressByNameV1

4.3测试存储过程:

共返回行记录。

4.4 客户端统计信息:

平均的执行耗时: 毫秒

5.测试,方法3

在方法2中,我们在Name列上创建全文索引提高了查询性能,但我们不仅仅局限于一两个方法,下面我们介绍第3个方法。

第3个方法,通过修改表的结构和创建全文索引。在表TBAddress增加多一个字段FullPath存储各个地址到Level 1的全路径,再在FullPath列上创建全文索引,然后直接通过全文索引来搜索FullPath列中包含“广”和“大”的记录。

5.1 新增加字段FullPath,并更新列FullPath数据:

5.2 在列FullPath添加全文索引:

5.3 存储过程代码:

procedure:up_SearchAddressByNameV2

5.4 测试存储过程:

共返回行记录。

5.5 客户端统计信息:

平均的执行耗时: .4毫秒

6.测试,方法4

直接使用Like对列FullPath进行查询。

6.1存储过程代码:

procedure:up_SearchAddressByNameV3

6.2 测试存储过程:

共返回行记录。

6.3 客户端统计信息

平均的执行耗时: 毫秒

7.小结

这里通过一个简单的表格,对方法1至方法4作比较。

从平均耗时方面分析,一眼就知道方法3比较符合开始的需求(耗时要控制在几十毫秒内)。

当然还有其他的方法,如通过程序实现,把数据一次性加载至内存中,再通过程序写的算法进行搜索,或通过其他工具如Lucene来实现。不管哪一种方法,我们都是选择最优的方法。实际的工作经验告诉我们,在实际应用中,多选择和测试不同的方法来,选择其中一个满足我们环境的,而且是最优的方法。

SQL Server 作业设置定时任务 公司有一个老项目由于直接把终端拍摄的图片以二进制的形式保存到数据库中,数据库比较大所以需要经常删除这些冗余数据,手动删除费时费力,项

Android实现矩形区域截屏的方法 对屏幕进行截屏并裁剪有两种方式:早截图和晚截图。早截图,就是先截取全屏,再让用户对截取到的图片进行修改;与之相对的,晚截图,就是先让

sql 删除表中的重复记录 遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢如下sql,找出重复的记录,和重复记录中ID值

标签: sql server搜索语句

本文链接地址:https://www.jiuchutong.com/biancheng/320244.html 转载请保留说明!

上一篇:sqlServer实现去除字符串空格(sqlserver去掉字符串内的指定字符)

下一篇:SQL Server 2005作业设置定时任务(sqlserver数据库作业)

  • 小规模纳税人缴纳增值税怎么算
  • 房屋契税怎么交在手机上操作
  • 附加税减半征收的条件
  • 公司购车购置税有优惠吗
  • 金税盘电子发票怎么读入
  • 那些情况可以申请退税
  • 收取返利发票怎么开具?
  • 增值税销项税如何进行处理,有哪些种情况
  • 业务宣传费超出部分以后年度怎样处理
  • 餐饮店进货要索取哪些单据
  • 公司取得增值税怎么算
  • 金三打印客户端插件如何下载?
  • 关于增值税普通发票情况的函范文
  • 纳税人如何办理纳税申报
  • 预收房款不征税发票
  • 企业提供技术咨询服务的企税优惠政策
  • 结息的会计分录怎么写
  • 应交税费的余额怎么计算
  • 车船税没发票只在备注可以计入管理费用吗
  • 销项税和进项税怎么区分
  • 如何编制固定资产折旧计算表
  • 华为p60pro上市时间是几月
  • mac怎么分区硬盘分区
  • 交易性金融资产的交易费用计入哪里
  • 公司代缴社保公司吃亏吗
  • 安装win7前需要手动格式化c盘吗
  • mac菜单键怎么设置出来的
  • 电脑台式机显卡怎么拆
  • macOS Big Sur 11.3新功能 为M1 Mac带来了iOS应用的手柄模拟功能
  • 公司多缴税款超过3年怎么办
  • linux系统输入
  • 系统自带功能
  • 资产和负债的计税基础金额的确认思维导图
  • phpcms怎么用
  • 盘亏固定资产累计折旧
  • 莱姆 惨败
  • 印花税哪里买
  • 迪格庄园阿拉扎尼河谷红葡萄酒750ml
  • 待抵扣进项税的限额是什么
  • 汽车增值税是
  • 支付兼职工资账务处理
  • 可供出售金融资产是流动资产吗
  • java处理字符串公式运算
  • mysql5.7.35安装配置教程
  • mysql存二进制用哪个字段
  • 车票增值税抵扣怎么操作
  • 认缴制注册资金不交可以吗
  • 挂靠到运输公司的车转让给个人如何交增值税
  • 应收账款余额百分比法怎么算
  • 资产负债表的其他应收款怎么算出来的
  • 电子商业汇票怎么接收
  • 如何计提材料跌价准备
  • 增值税发票种类三种
  • 个人垫付的费用如何向单位报销行政单位
  • 非盈利社会团体可以开发票吗
  • 公司按揭贷款
  • 企业的借款费用有哪些处理方法
  • 汇算清缴后多交的企业所得税能退吗
  • 未完施工是存货吗
  • 个体户需要报税吗?需要报哪些税?
  • 新办企业建账
  • 小企业应收账款减值
  • sqlserver数据库版本号怎么查
  • navicat远程连接oracle
  • win10提高
  • windows xp.exe
  • linux ps-l
  • pebble框架
  • ubuntu qtcreator
  • Node.js 中exports 和 module.exports 的区别
  • 服务器安全设备
  • c语言node定义
  • jquery jsonview
  • 原生javascript
  • python面向对象编程心得体会
  • 税务申报热线电话
  • 河南省教育厅纪检组举报电话
  • 出口退税的期限是多长
  • 马来西亚进口货物的标签要求
  • 购买税控盘的发票需要交印花税吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设