如何解决SQL查询速度太慢?

[复制链接]
查看11 | 回复3 | 2020-12-4 13:22:45 | 显示全部楼层 |阅读模式
SQL Server查询速度慢的原因有很多,常见的有以下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效应。3、没有创建计算列导致查询不优化。 4、内存不足5、网络速度慢6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。9、返回了不必要的行和列 10、查询语句不好,没有优化
回复

使用道具 举报

千问 | 2020-12-4 13:22:45 | 显示全部楼层
对于数据可以参照下面几点 1、优化SQL语句,SQL语句对查询速度影响最大 2、对于经常查询的字段作索引。但是这样会增加修改时的压力 4、优化SQLServer,比如给其分配固定的内存,预先分配查询内存,调整CPU使用率等。 5、优化硬件资源,比如使用更高的服务器或者硬盘,独立安排数据库的数据文件和索引文件,将数据文件分布于不同的物理硬盘上等等 6、考虑使用分布数据库或者对大表进行拆分 另外,2G的数据库应该不算很大了,我处理过18G的数据库,8000万条记录,查询速度可以被接受
回复

使用道具 举报

千问 | 2020-12-4 13:22:45 | 显示全部楼层
把一个表分成几个表,可以按,ID分开,比如1-10000,10000-20000这样分成多个表,当然你可以用其它的方法分开,这样的SELECT的速度会快点,其实你看到的耗时54秒,主要是输出速度太慢了,不是查询慢
回复

使用道具 举报

千问 | 2020-12-4 13:22:45 | 显示全部楼层
建议不要使用select * 这样数据量太大,可以加上select top 1000 * from hr_worktime最好把一起不用的数据转移到备份库,这里保留需要的最新数据即可。呵呵,这个问题很有趣不是吗?上面的同志们只是给出一些建议,以我的经验来看(oracle),如果数据量较大,索引的重复量尽量避免,最好的方式是建立非业务id(最好使用自增或是序列),把这个id建立索引。你的最大的问题就是,建立了索引后,索引列必须出现在where中,否则索引就白白建立了,比如你的id是从1一直到383000,那么你的语句可以写成select * from hr_worktime where id>-1还有就是,where条件中避免出现!=,or,between,等东西,否则索引实效。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836