我有一个sql查询:
SELECT
[Id],
[Content]
FROM
[MyTable] with (nolock)
where
Content is not null
and (PATINDEX('%"number" : "[0-9]%', Content) > 0
or PATINDEX('%"number":"[0-9]%', Content) > 0
or PATINDEX('%"number" :"[0-9]%', Content) > 0
or PATINDEX('%"number": "[0-9]%', Content) > 0
--del
or PATINDEX('%"del":"[0-9]%', Content) > 0
or PATINDEX('%"del":"[0-9]%', Content) > 0
or PATINDEX('%"del":"[0-9]%', Content) > 0
or PATINDEX('%"del":"[0-9]%', Content) > 0
)在我的服务器上,缓存已被清除,返回大约400行需要超过两分钟,这可能是因为我对or有很多条件。
我是这样创建查询的,因为Content列中的"number“字符串在":”和"number“字符串或下一个数字之间是否有空格的可能性。
有办法从or条件下减少吗?
发布于 2017-03-29 17:01:16
试试看
SELECT
[Id],
[Content]
FROM
[MyTable] with (nolock)
where
Content is not null
and (PATINDEX('%"number":"[0-9]%', replace(Content,' ','')) > 0
or PATINDEX('%"del":"[0-9]%', replace(Content,' ','')) > 0)您也可以删除Content is not null部件。
https://stackoverflow.com/questions/43099021
复制相似问题