0

我想知道如果执行的查询中没有 top 子句,是否有约束或方法来限制表返回的总行数。我们不能轻易修改正在执行的 SQL,因此解决方案需要在 db 级别。

我们的系统盲目地构建了很多查询,例如

select * from table where email = 'john'

当我们有小表时,这工作得很好,但现在我们的表有 +10000 行,这变得效率低下。

感谢您的任何建议。

4

2 回答 2

4

答案是“是”。一种方法是使用“设置行数”。另一种方法是为此目的使用查询连接中内置的任何工具。

例如:

SET ROWCOUNT 10
select * from INFORMATION_SCHEMA.COLUMNS

这会将任何后续查询返回的最大行数设置为 10。但是,为了将其融入您的应用程序,我们需要更多信息,例如该应用程序如何访问数据库。

于 2012-06-21T20:43:51.363 回答
1

这有点令人费解:

CREATE TABLE temp
(
y  char(9) PRIMARY KEY,
x  char(9)
);

insert into temp (x, y) values ('j', 'hello');
insert into temp (x, y) values ('j', 'world');
insert into temp (x, y) values ('q', 'foo');
insert into temp (x, y) values ('q', 'bar');


with myCTE(x,y,r) as
(
select 
  x
  ,y
  , r = ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
from temp
)
select * from myCTE where r <= 3;
于 2012-06-21T20:55:57.497 回答