0

実行されたクエリに top 句がない場合、テーブルが返す行の総数を制限する制約または方法があるかどうか疑問に思っていました。実行中の SQL を簡単に変更することはできないため、ソリューションは db レベルである必要があります。

システムがやみくもに構築するようなクエリがたくさんあります

select * from table where email = 'john'

小さなテーブルがあったときはこれでうまくいきましたが、現在はテーブルに +10000 行があり、これは非効率的になっています。

提案をありがとう。

4

2 に答える 2

4

答えは「はい」です。1 つの方法は、「set rowcount」を使用することです。もう 1 つの方法は、この目的のためにクエリ接続に組み込まれている任意の機能を使用することです。

例えば:

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 に答える