sql查询时使用临时表的速度问题
2015-11-13 16:52
190 查看
做如下查询
1)不使用临时表:
select * from 库存 where 物料编号 in (select 物料编号 from 物料 where 制造厂商='abc');
500条记录耗时1s
2)使用临时表
create table #pro(procode nvarchar(30))
insert into #pro select 物料编号 from 物料 where 制造厂商='abc'
select * from 库存 where 物料编号 in (select procode from #pro);
500条记录耗时30s
原因:在库存表里 物料编号 是索引过的,而#pro 里的procode 没有索引,这样由于结构不同造成查询耗时增加。
解决:给#pro 加上索引:
create index IX_pro ON #pro(procode)
结果耗时变成3s(索引也需要增加开销)
1)不使用临时表:
select * from 库存 where 物料编号 in (select 物料编号 from 物料 where 制造厂商='abc');
500条记录耗时1s
2)使用临时表
create table #pro(procode nvarchar(30))
insert into #pro select 物料编号 from 物料 where 制造厂商='abc'
select * from 库存 where 物料编号 in (select procode from #pro);
500条记录耗时30s
原因:在库存表里 物料编号 是索引过的,而#pro 里的procode 没有索引,这样由于结构不同造成查询耗时增加。
解决:给#pro 加上索引:
create index IX_pro ON #pro(procode)
结果耗时变成3s(索引也需要增加开销)
相关文章推荐
- android数据库的简单Demo(原生版+Google版)
- 数据库基础——数据库设计
- Oracle中定义DES加密解密及MD5加密函数
- 处理mysql上百万条数据的优化
- mysql max_allowed_packet 设置过小导致记录写入失败
- 数据库Blob数据类型转String
- oracle 数据库方面总结
- mongodb
- mongodb的安装、创建数据库、设置用户(Window 7)
- Oracle按季度统计语句
- SqlServer分页查询
- Oracle中的join
- oracle杀死进程
- [层次结构|树状结构] oracle中用start with...connect by prior子句实现递归查询
- oracle 11g 密码过期|修改密码
- DB2数据库IMPORT/EXPORT脚本生成
- 导入导出数据库表
- 查询 java 或 oracle 或 jsp的图书
- sql百万级数据库优化方案
- mysql 查询某表的外键关系