sql-server - 优化sql脚本占用CPU资源

标签 sql-server database query-optimization

我有一个生成以下 SQL 语句的应用程序。

select ROW_NUMBER() OVER (ORDER BY col1) SerialNo, col1, col2, col3, col4, 
col5, col6, col7, col8
from tableA where  (col3 like '%search1%' or col9 like '%search1%'or col10 
like '%search1%'or col5 like '%search1%' ) 
order by col5

它最近变得如此缓慢(表有超过 600 万条记录)并且它已经耗尽了 CPU 的资源。关于如何优化这个查询有什么想法吗? “search1”是用户输入的任意字符串,用空格分隔。”

我使用性能监视器进行分析,并实现了所有似乎使情况恶化的建议。

最佳答案

连接您的列以对此连接进行搜索;

where col3+col9+col10+col5 like '%search1%'

使用过滤器创建子查询,然后在该记录集的行上执行 ROW_NUMBER

select ROW_NUMBER() OVER (ORDER BY col1) SerialNo, col1, col2, col3, col4, 
col5, col6, col7, col8
from (select SerialNo,col1, col2, col3, col4, 
col5, col6, col7, col8 from tableA where  col3+col9+col10+col5 like '%search1%'
) as tfiltered
order by col5

关于sql-server - 优化sql脚本占用CPU资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46767994/

相关文章:

c# - 存储过程,传递日期数组,以逗号分隔。转换错误

database - 如何使用数据库支持的资源本地化 MVC

java - 如何在 JSP 中执行 SQL SELECT 查询?

database - Grails:处理现有数据库的最佳方法

mysql - 如何优化 MySQL 查询?因为获取记录需要 45 秒

sql-server - SQL性能: does MSSQL optimise the use of date time functions or is it better to pass it as a parameter

sql-server - LINQ to SQL 对象版本控制

c# - 打开SQL连接时算术溢出异常

SQL:间隙和岛屿、分组日期

MySQL 需要 10 秒来计算 100k 条记录的条件