• 汉字转全拼音函数优化方案(SQLServer),值得你看看


    去年1月份时写了一篇关于优化汉字转拼音函数的解决方案,当时重点在于优化所举案例只能解决汉字转为拼音的首字母。

    前不久收到这样一条短消息

    随之我从(CSDN,CNBLOG,51CTO等)搜了几个解决方案,性能确实都不大理想。

    首先还是感谢园友这个问题,接下来我就从网上抽取两个案例作优化说明

     

    函数要求实现功能

    select 函数名 ('你好,我是追索')

    返回的结果(ni hao , wo shi zhui suo)

     

    解决方案一:

    解决方案一 

    测试了一串字符这个案例确实能达到汉字转拼音要求,但当我看到此函数内declare table、insert、order by等等这些耗性能的关键词让我感到头疼

    我们还是来看看它的执行开销

    估计子树大小大于5,这是多么惊人的一个数字。此执行计划后面跟着茫茫多的线条几乎全是表插入

    我用一万条数据测试该函数等了我1分多钟都没执行完毕,可见该解决方案性能差到极点。

     

    接下来我们看看解决方案二

    解决方案二

    测试了一串字符这个案例同样能达到汉字转拼音要求,该解决方案还好没让我看到表插入,这回性能应该大有提高

    我们来看那看它的执行开销

    果然不出所料,估计子树大小在0.017左右, 其中排序开销最大

    我用一万条数据测试该函数花了10秒左右

    既然排序开销最大那就优化该解决方案去掉order by。

    这时估计子树大小就在0.00001之下了,可你会发现此解决方案再怎么优化还是免不了需要常量扫描,where筛选等运算.

    我用一万条数据测试该优化后函数花了4~5秒左右

     

    出于对性能要求的不满足,打开工具我自己写了一个汉字转拼音的函数

    由于时间仓促未加任何注释,有问题可及时提出

    最后给出的就是重写的解决方案

    解决方案三

    我们来看它的执行计划

    没有排序,没有常量扫描,没有筛选器,没有计算标量

    估计子树大小为0

    我用一万行测试数据花0~2秒就把所有汉字转换为拼音

     

  • 相关阅读:
    阿里云张新涛:连接产业上下游,构建XR协作生态
    从中间件到分布式数据库,PolarDBX的透明之路
    零信任策略下K8s安全监控最佳实践(K+)
    了解3D世界的黑魔法纯Java构造一个简单的3D渲染引擎
    EMR重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器
    PolarDBX拆分键推荐
    实战指南 | Serverless 架构下的应用开发
    【20220804】一定要遵守规则
    【20220810】给二宝取名
    【20220806】连岳摘抄
  • 原文地址:https://www.cnblogs.com/ziyan22/p/2319776.html
Copyright © 2020-2023  润新知