我有这个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”字符串或下一个数字之间有空格。< / p>
有没有办法减少or
条件?
答案 0 :(得分:1)
试试吧
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
部分