我在产品表 搜索 几个区域的数据 而且只要前一千条
例如语句:
SELECT TOP 1000 * FROM Provide WHERE AreaID IN( 1, 2, 3)几个区域还好 多了就特别慢 因为 产品表里数据特别多 有几百万条
SELECT TOP 1000 * FROM Provide WHERE AreaID IN( 1, 2, 3, 4, 5, 6, 7 ,8 ,9, 10 ……) 超级慢大家有什么办法没解决下 查询速度的问题 而且是不管多少区域 只要记录满1000条就好了 后面的就不用查询了
例如语句:
SELECT TOP 1000 * FROM Provide WHERE AreaID IN( 1, 2, 3)几个区域还好 多了就特别慢 因为 产品表里数据特别多 有几百万条
SELECT TOP 1000 * FROM Provide WHERE AreaID IN( 1, 2, 3, 4, 5, 6, 7 ,8 ,9, 10 ……) 超级慢大家有什么办法没解决下 查询速度的问题 而且是不管多少区域 只要记录满1000条就好了 后面的就不用查询了
先插入到临时表 在join试一下
干嘛要写成这样 SELECT TOP 1000 * FROM Provide WHERE AreaID IN( 1, 2, 3, 4, 5, 6, 7 ,8 ,9, 10 ……1000)???
IN 里面的数据也是查出来的
我需要 指定区域的 数据 所以要IN
插入到临时表 #temp
在
SELECT TOP 1000 *
FROM Provide
join #temp T On Provide.AreaID =T.AreaID
这样试一下 in的效率不是很高
方案跟楼上的差不多 就是join代替in
FROM Tb
WHERE EXISTS
(SELECT *
FROM tb
WHERE 条件)
建索引主键,分区
Union
SELECT * FROM Provide WHERE AreaID = 2
Union
SELECT * FROM Provide WHERE AreaID = 5
......