如何改进这种无休止的查询?

GLl*_*art 4 sql t-sql sql-server optimization query-optimization

我有一张近5kk的桌子.他们每个人都有一个文本列,我存储我的XML日志

我试图找出是否有一些日志

<node>value</node>
Run Code Online (Sandbox Code Playgroud)

我试过了

SELECT top 1 id_log FROM Table_Log WHERE log_text LIKE '%<node>value</node>%'
Run Code Online (Sandbox Code Playgroud)

但它永远不会完成.

有什么方法可以改善这种搜索吗?

PS:我不能丢弃任何日志

Jon*_*nVD 9

诸如通配符的查询'%<node>value</node>%'将导致全表扫描(忽略索引),因为它无法确定它将在字段中找到匹配的位置.我知道改进这个查询的唯一真正方法(如果表不断记录,没有分区表等等应该考虑的事情)将是为表添加一个全文目录和索引提供对该字段的更有效搜索.

是一个很好的参考,应该引导您完成它.完成此操作后,您可以使用针对此类检索进行优化的CONTAINS和FREETEXT运算符.