首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

微信公众号:振振有CI

振振有辞ci,分享AI、BI中的一些技术心得。

间或来点小诗词附庸风雅!

欢迎大家关注。

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

场景:

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、匹配

下面的是我的公众号二维码图片,欢迎加我,一起学习,一起交流。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222G0WBF000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券