最近到手一个任务,一张表里有400万数据,拿来查询,一开始最简单的分页not in结果数据库一分钟都没反应,用临时表也差不多没反应.取消了.然后id>max(id)这下分页是毫秒级别的.以为完美了.结果却是没有任何条件查询的,然后放上了一个 name like '%???%'一下子查出来了.花了7秒左右,这显然不现实一个条件就要7秒,如果两个三个乃至十个,只有一个like的时候,效率慢然后换成了charindex好像是快上了那么一/两秒这也不够啊,用mssql性能分析,没有创建聚合索引提示,所以来求助
9 回答
BIG阳
TA贡献1859条经验 获得超6个赞
like 查询,本身就是非常慢的,加上数据量是非常大的,再怎么优化,也不可能满足业务逻辑的需求,变通方法:如果like的关键字是有限多个,可以事先将结果计算出来,放到一个表中,每次like匹配的时候,直接到这个表中查看,不知道你明白我说的方法没,我现在的项目中,就是使用这种方式,我们的表的数据量达到千万级,adhoc查询显然不现实,预先计算好才能解决此类问题。
- 9 回答
- 0 关注
- 624 浏览
添加回答
举报
0/150
提交
取消