如何让多参数的SQL Server过滤程序更快
本文介绍了如何让多参数的SQL Server过滤程序更快的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
目前我正在努力寻找在大表格中搜索的来源,我有一个很好的模型化表格1个主要表格供用户使用,还有几个表格用于性别、地址、上次购买、评论的产品等功能。
- 合并和筛选时EF非常慢,因此我决定使用存储过程并使用Dapper进行调用。
- 我想过滤这些几乎5.5 GB(47万行)的数据 转到更大,31列,7个表,每个表+15列)。
- 我有5个不同的过滤器,它必须很快。因为这个程序 预计响应时间为1分钟
查询应使用动态参数
我必须这样做,我尝试了一些不同的方法,但仍然很慢。我有5个过滤器和1个日期声明。用户可以发送5个、4个或3个筛选器,也可以不发送筛选器。
- 我试过的方法,如果参数为空,它不会做任何事情,但参数不是空的,而不是过滤,但我从博客上读到使用‘or’确实会降低性能
- 我尝试过的方法,没有‘or’,但速度比%1慢。
方法正在使用动态查询
DECLARE@QUERY varchar(Max)=‘INSERT INTO#TmpResult 选择
一些字段 来自#tmpSales saor
尽管仍然不够快,但3.方法在大约15秒内就能响应。我应该如何在几秒钟内完成?
推荐答案
您需要执行几个步骤。
- 将表划分为2个或3个部分,如筛选产品和付款,然后插入到#temptable中,并与Channel等其他表应用内部连接,并获得筛选的数据#Tempable2,然后将第二个temptable与Sales和SalesType连接
- 在WHERE中筛选列,在所有列上创建索引。
这篇关于如何让多参数的SQL Server过滤程序更快的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!