sqlserver like '%' 性能问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver like '%' 性能问题相关的知识,希望对你有一定的参考价值。

有两个查询 一个 是 select * from a
一个是SELECT * from a where a.b like '%'

两者在执行上有什么区别
性能如何

参考技术A select * from a 是查询表A中的所有数据,而select * from a where a.b like '%'是查询a.b为所有的所有记录,虽然查询的结果是一致的,但是后者要先判断where后面的条件,性能上应该比前者弱。追问

你能不能再细节点呢

追答

类似于一段程序中有许多判断分支,一旦判断语句多了,程序的运行效率当然没有顺序执行的高,数据表查询时也是一样,当记录增多,大量数据的查询时,根据条件判断查询性能就自然没有直接查询所有好。

参考技术B 感觉SQLsever的查询的快慢主要跟数据有关系,
比如第二个语句改成SELECT * from a where a.b like 'A%'
那么这一句就快很多,因为数据少了很多.
而select * from a 其实跟select * from a where a.b btween 'min_value' and 'max_value'是一样的
希望对你有些帮助
参考技术C select * from a 是查询a表中所有数据 没有任何条件
SELECT * from a where a.b like '%' 是查询a表中b字段不为空的所有数据 b字段不为空就是条件
参考技术D 常见的Windows+IIS+.NET+MSSQL作为Windows平台最为通用的Web架构,支撑着大量的企业应用,如果您的程序基于windows平台的.NET架构开发,SQL Server将是您的最佳选择。 第5个回答  2015-11-08 SQL Server 执行时间: CPU 时间 = 3515 毫秒,占用时间 = 34625 毫秒。
SQL Server 分析和编译时间: CPU 时间 = 0 毫秒,占用时间 = 0 毫秒

sqlserver json 查询

select * from 表名 where JSON_VALUE(字段名,‘$."json字段名"‘) like ‘%查询关键字符串%‘

$表示object的根

例 select * from Country where JSON_VALUE(Name,‘$."CountryName"‘) like ‘%国%‘

 

 

 

测试数据

 
id(INT)json(VARCHAR)path1(VARCHAR)
1 [10, 20, [30, 40]] $[2][*]
2 {"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"} $.ccc.hhh[*]
3 {"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg",hhh":["h0","h1","h2"]},"iii":"jjj"} $.ccc.hhh[1]
4 [10, 20, [30, 40]] NULL
5 NULL $[2][*]
6 "{xx]" "$[2][*]"

以上是关于sqlserver like '%' 性能问题的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver的like '%xxx%'优化,全文索引

sqlserver数据库中怎样查询某个字段中含有某些字

sqlserver数据库中怎么查询某个字段中含有某些字?

在SQL中使用LIKE'%'和整数

][SQL Server]关键字 'like' 附近有语法错误。

sqlserver2008从一个表中模糊查询并分页