求一优化的存储过程表A int nvarchar
IdA TypeA
1 技术部
2 美工部
3 业务部
... ....表B int nvarchar int
IdB Name IdA
1 JG 1
2 周杰杰 1
3 Scofield 3
... ... ...
在表B中 查出 表A中几个类型的前1000条数据出来 由于表B中百万级数据 查的特别慢 严重影响速度
例:
SELECT TOP 1000 * FROM 表B WHERE IdA in( 1,2,3..... )
或 SELECT TOP 1000 * FROM 表B WHERE EXISTS (1,2,3....)想请教高手除了弄个临时表 还有什么办法快点没 数据我只要前一千条 最好是存储过程我想写一个存储过程
IdA TypeA
1 技术部
2 美工部
3 业务部
... ....表B int nvarchar int
IdB Name IdA
1 JG 1
2 周杰杰 1
3 Scofield 3
... ... ...
在表B中 查出 表A中几个类型的前1000条数据出来 由于表B中百万级数据 查的特别慢 严重影响速度
例:
SELECT TOP 1000 * FROM 表B WHERE IdA in( 1,2,3..... )
或 SELECT TOP 1000 * FROM 表B WHERE EXISTS (1,2,3....)想请教高手除了弄个临时表 还有什么办法快点没 数据我只要前一千条 最好是存储过程我想写一个存储过程
select top 1000 *
from ta a ,tb b
where a.ida=b.ida
WHERE IDB IN(SELECT TOP 1000 IDB FROM B WHERE IDA=T.IDA ORDER BY ID )先取B表的每个类型前1000条吧,楼主IDB是自增列?加上索引试试再连接表A,
我用的是 SQL 2008 这两个函数怎么用啊这样还是一样慢 而且我是有条件的去查询
idB 是属于 idA的一个类型
WHERE IDB IN(SELECT TOP 1000 IDB FROM B WHERE IDA=T.IDA ORDER BY ID )SELECT * FROM 表B T
WHERE (SELECT COUNT(IDB) FROM B WHERE IDA=T.IDA AND ID<=T.ID)<=1000那就先试这2个吧