SELECT TOP(5000) rowno=ROW_NUMBER() OVER(ORDER BY GETDATE()), * FROM dbo.a ORDER BY rowno DESC
select top 5000 * from tb order by 时间段 desc
不带索引时,比如我想查询 在最新的5000条里,a大于100的数据 select * from (select top 5000 * from tb order by 时间字段 desc) where a>100; 这个句子是先遍历 tb表 查询到最新的5000条数据,然后再在5000条里找到大于100的数据吗?
rowno=ROW_NUMBER() OVER(ORDER BY GETDATE()), *
FROM dbo.a
ORDER BY rowno DESC
select * from (select top 5000 * from tb order by 时间字段 desc) where a>100;
这个句子是先遍历 tb表 查询到最新的5000条数据,然后再在5000条里找到大于100的数据吗?
是的 ,你这样操作是 先先遍历表tb将最新的5000条记录放在一个临时视图中,然后从这个视图中查出a>100的数据。
有没有优化的方案呢?我是嵌入式系统发现数据大于10万条就超慢,要10秒左右,
我已经建立了索引,没多大的改进效果,还有什么办法能优化吗?
另外 where a%2=0;这种查询条件是不是不支持索引