前几周做项目遇到问题与大家分享
因读取数据关联N个表,我大部份都采用子查询(in),当时数据量在10000记录级内,而且在本地服务器运行速度都比较快。
当再一次导入几W条记录后多表关联(in)就宕机。然后疯狂网上搜解决方案。
查询速度慢的原因很多,常见如下几种:
1、没有索引或者没有用到索引
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足。
5、网络速度慢。
6、查询出的数据量过大。
7、锁或者死锁。
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列。
10、查询语句不好,没有优化 。
按照标准进行修改速度提升
1、查询表时都采取 with(nolock) 解锁,
2、创建计算列,
3、获取数据进行限制,
4、子查询优化尽量采用联接。
5、返回了不必要的行和列,特别包含子查询行和列。
6、消除newid()随机排序,