前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用SQL高性能解决字符串的连续匹配

用SQL高性能解决字符串的连续匹配

作者头像
企鹅号小编
发布2018-01-31 11:11:51
7040
发布2018-01-31 11:11:51
举报
文章被收录于专栏:数据库数据库

高性能解决有序集合的连续匹配问题

场景:

A集合有8个元素:ali、boy、c、dog、e、f、g、h,

B集合有5个元素:boy、c、dog、e、h

问B中是否包含连续4个以上的A集合元素?是即符合要求。

查阅网络资料甚至咨询论坛、技术群里的朋友,尽管方法各异,本质上还是循环遍历,最多考虑了利用bitmap提升下循环匹配性能。

难点:连续4个以上的计算与匹配

不论是集合还是字符串,4个连续的判断与匹配基本都依赖循环遍历算法,不论是KMP还是Boyer-Moore算法,如果一行记录都需要这么复杂的循环才能得出,那对千万级甚至亿级的数据时的性能?

绝对原创的独特解法

《SQL沉思录》一书明确指出,循环是过程化的思维方式,数据集是集合思维方式,就不用能集合思维也就是sql的方式高效解决问题?

但没有现成轮子的时候,那只有自己发明轮子。

连续4个,试试分区函数的滑动分窗?当原、现尺码都高效拆分出连续4个后,匹配就是一个简单的join关联问题。

思路

1、滑动分窗求出连续4个元素

2、两表关联,能关联到即为合格

实现代码

1、构造2张测试表

2、构造连续4个元素集合

3、匹配

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档