为了账号安全,请及时绑定邮箱和手机立即绑定

mssql百万数据查询

mssql百万数据查询

忽然笑 2018-12-06 21:16:41
最近到手一个任务,一张表里有400万数据,拿来查询,一开始最简单的分页not in结果数据库一分钟都没反应,用临时表也差不多没反应.取消了.然后id>max(id)这下分页是毫秒级别的.以为完美了.结果却是没有任何条件查询的,然后放上了一个 name like '%???%'一下子查出来了.花了7秒左右,这显然不现实一个条件就要7秒,如果两个三个乃至十个,只有一个like的时候,效率慢然后换成了charindex好像是快上了那么一/两秒这也不够啊,用mssql性能分析,没有创建聚合索引提示,所以来求助
查看完整描述

9 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

用select max/min吧

查看完整回答
反对 回复 2019-01-07
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

在查询列上加索引。

查看完整回答
反对 回复 2019-01-07
?
开满天机

TA贡献1786条经验 获得超13个赞

给需要like的字段加上索引,还有就是不要使用not in.如果要用也要给not in 的列,加上索引。

查看完整回答
反对 回复 2019-01-07
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

1.不要用select * 要用select 你要显示的字段........

2.用存储过程分成查询,并从每页过滤

查看完整回答
反对 回复 2019-01-07
?
aluckdog

TA贡献1847条经验 获得超7个赞

具体不了解,可以试试存储过程

查看完整回答
反对 回复 2019-01-07
?
慕村225694

TA贡献1880条经验 获得超4个赞

存储过程也是sql语句写出来的好么...语句都运行不成功..存储过程..

查看完整回答
反对 回复 2019-01-07
?
BIG阳

TA贡献1859条经验 获得超6个赞

like 查询,本身就是非常慢的,加上数据量是非常大的,再怎么优化,也不可能满足业务逻辑的需求,变通方法:如果like的关键字是有限多个,可以事先将结果计算出来,放到一个表中,每次like匹配的时候,直接到这个表中查看,不知道你明白我说的方法没,我现在的项目中,就是使用这种方式,我们的表的数据量达到千万级,adhoc查询显然不现实,预先计算好才能解决此类问题。

查看完整回答
反对 回复 2019-01-07
?
月关宝盒

TA贡献1772条经验 获得超5个赞

明白你的意思..但是我这个是专门负责拿来搜索的,每次搜索的都不一样也就那么10个左右字段.

查看完整回答
反对 回复 2019-01-07
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我们的库千万级,我第一次用的时候一条统计库里多少条记录的sql执行了半个小时。    以后也要学习下优化,哈哈~

查看完整回答
反对 回复 2019-01-07
  • 9 回答
  • 0 关注
  • 624 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信