2012-09-07 60 views
2

我一直在为表中的大量行运行sql查询。查询的结构与以下查询类似。优化SQL查询

SELECT id FROM 
(
SELECT 
    id,(ROW_NUMBER() OVER (ORDER BY id)) AS Row 
FROM 
    <table> 
) 
temp_table WHERE Row BETWEEN 1 AND 50 

我在UI上使用了分页,因此我需要一次读取50个记录。我担心的是,我正在读取所有记录,然后从中选择50个记录,但是没有办法让我只选择那些我真正需要的记录。请注意,这是一个简化查询,原始查询非常复杂,并且有很多连接。是否有任何标准的方式来实现支持分页的查询?

回答

1

我的建议在这里:

1.创建一个索引视图(view_sample)与

3行查询

SELECT 
    id,(ROW_NUMBER() OVER (ORDER BY id)) AS Row 
FROM 
    <table> 

2.Now创建一个索引(clustered)。从view_sample中选择id,其中Row BETWEEN 1 AND 50

+0

我在运行时动态生成查询,所以按列排序可随时更改。整个查询本质上是动态的,所以创建索引并不容易。 –

+0

哪些查询是你动态生成的? – AnandPhadke

+0

在这里,我要求你在列行上创建索引,这是由ROW_NUMBER填充的,我猜这个列将永远在那里 – AnandPhadke