最近在工作中经常遇到store procedure执行效率不好的情况。
使用数据库:sql server 2012
业务场景:
查询数据库表,嵌套查询,直接从数据库中查询是几万条数据,直接导致前台页面抛错。
解决方案:
1.在存储过程里面新建一张临时表,建表语句要写具体字段,不能写
select * into #temp_source from pay;
应该写
create table(
name char(10),
password char(10)
)
2.将查询出来的数据插入到临时表中,具体字段名要匹配,不能写insert into #temp_source select * from pay.
应该这样写
insert into #temp_source(name,password) select name,password from pay where name= '',password = ''.
对于数据量小的查询,第一种写法和第二种写法差别不大,如果数据量特别大,字段匹配就要耗费数据库很大的时间。所以一定要匹配具体字段,增加查询效率。
我遇到的问题,匹配字段和不匹配字段时间相差6倍。