zoukankan      html  css  js  c++  java
  • sql like '%x%'优化

    好久没写点什么了。唉(此处省略无数,一切尽在苦逼中...)

    说说sql中的全匹配优化吧。在sql server进行模糊查询的时候,如果是进行全匹配的话,那么肯定会用到like。我们知道like '%张' 这样的模糊查询的时候是无法使用到索引的,而like '张%'这样却可以。不能使用索引,如果数据量非常大的话,效率自然就低下了。这时候我们或许会想到CHARINDEX或者是PATINDEX这两个T-SQL函数,不过即使使用了依然是没有多大的效果的。

    那么这时候可以考虑下逆转的概念。

    具体操作:

    比如模糊查询的条件是 张三 ,假设数据库customer表中name字段有 张三丰,陈张三,李四,王张五等值

    正常写法

    select * from customer where name like '%张三%' 那么查出来的值就是“张三丰和陈张三”

    而逆转的写法

    select * from customer where (name like '张三%'  or reverse(name) like '三张%')

    这是查出来的结果是不变的,但是查询的时间,经过200万条以上数据测试相差则上百倍。

        测试正常写法差不多10秒,而逆转的写法则为20-35毫秒之间。

    本文从百度空间搬家到博客园。。

    邮箱:yunanwu@foxmail.com 微博:@提灯寻影(http://weibo.com/wuyunnan) 技术主页:http://www.cnblogs.com/yuanawu/ 可以白手起家不可手无寸铁!我是我命运的主宰者,我是我灵魂的掌舵人! 每一次的选择都将是一个挑战!
  • 相关阅读:
    阿里云主机如何重装系统?
    Linux下mysql新建账号及权限设置
    Ahead-of-time compilation(AOT)
    XBOX ONE游戏开发常见问题
    云计算之路-阿里云上:RDS用户的烦恼
    数字证书原理
    《你不常用的c#之二》:略谈GCHandle
    批处理文件指定jre路径启动java桌面应用程序
    关于OAUTH2.0的极品好文
    第一天接触Orchard
  • 原文地址:https://www.cnblogs.com/yunanwu/p/4168582.html
Copyright © 2011-2022 走看看