首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

【100分】真正的疑难有关问题,怎么解释加一个排序就超时?怎么解决这个有关问题?

2012-08-16 
【100分】真正的疑难问题,如何解释加一个排序就超时??如何解决这个问题???如题,下面语句:SQL code--全表数据

【100分】真正的疑难问题,如何解释加一个排序就超时??如何解决这个问题???
如题,下面语句:

SQL code
--全表数据很多大概有2千万条,--符合检索条件的数据58条--相关字段都有索引select top 100 * from tb with(nolock) where obid=10100    and id >456789    and dateTime < '2012-01-16 00:00:00'--下面的order by语句不加,秒出,加上,就铁定超时,--请问为什么?如何解决? order by id


[解决办法]
ID字段有索引?还是聚集索引?
[解决办法]
探讨
引用:

ID字段有索引?还是聚集索引?

id是主键,自增长字段,聚集索引

[解决办法]
试试?
SQL code
WITH t AS(select * from tb with(nolock) where obid=10100    and id >456789    and dateTime < '2012-01-16 00:00:00')SELECT TOP 100 *FROM tORDER BY id
[解决办法]
探讨
引用:

引用:
引用:

ID字段有索引?还是聚集索引?

id是主键,自增长字段,聚集索引

那你不排序应该也是按ID排着的啊.

不行,试过了,去掉就会有重复,导数据会失败

[解决办法]
SET SHOWPLAN_TEXT ON
GO
select top 100 * from tb --with(nolock)
 where obid=10100 
and id >456789 
and dateTime < '2012-01-16 00:00:00'

select top 100 * from tb --with(nolock)
 where obid=10100 
and id >456789 
and dateTime < '2012-01-16 00:00:00'
--下面的order by语句不加,秒出,加上,就铁定超时,
--请问为什么?如何解决?
 order by id


执行给结果。
[解决办法]
SQL code
因为你 加了 with(nolock) 查询出来的数据是 ID 的倒序(相当做了一次隐形的排序),如果不加是按照 ID 的正序 出的。这个是我最近才发现的。再加 ORDER BY ID 相当于再次排序 。故慢。还跟你的磁盘和tempdb库大小增长速度有关。
[解决办法]
探讨
引用:

SET SHOWPLAN_TEXT ON
GO
select top 100 * from tb --with(nolock)
where obid=10100
and id >456789
and dateTime < '2012-01-16 00:00:00'

select top 100 * from tb --with(nolock)
wh……

[解决办法]
能不能按照这个倒序进行导数据呢?

热点排行