powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как ограничить количество записей при выборке?
20 сообщений из 20, страница 1 из 1
Как ограничить количество записей при выборке?
    #32787003
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуйста! Необходимо ограничить количество выводимых записей,
допустим в таком запросе:

данный запрос возвратит 1000 записей:
select count(*) from table1 group by 1;

задача заключается, узнать возвратит ли запрос больше 10 записей, и при превышении лимита прекратить выборку.
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787028
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimПомогите пожалуйста! Необходимо ограничить количество выводимых записей,
допустим в таком запросе:

данный запрос возвратит 1000 записей:
select count(*) from table1 group by 1;

задача заключается, узнать возвратит ли запрос больше 10 записей, и при превышении лимита прекратить выборку.
Если не использовать возможности клиента, то:
Код: plaintext
select first  10   from table1
или, если запрос неизменен по количеству столбцов и часто повторяется, написать хранимую процедуру.
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787036
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimПомогите пожалуйста! Необходимо ограничить количество выводимых записей,
допустим в таком запросе:

данный запрос возвратит 1000 записей:
select count(*) from table1 group by 1;

задача заключается, узнать возвратит ли запрос больше 10 записей, и при превышении лимита прекратить выборку.
Данный запрос вернет 1 запись.

Но то что ты хочешь очень похоже на select first 10 * from mytable
PS: запрос с first обычно используют с order by, иначе вернуться любые 10 записей
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787056
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что мне не нужно первые десять записей, которые вернет запрос. Мне нужно узнать, возвратит ли запрос больше 10 записей.

select count(*) from table1 group by 1;

группировка занимает продолжительное время, и,
может быть можно сделать, что если при выполнении запроса сервер информикс собрал уже 10 записей, то прекратить выборку или что нибудь вроде этого.
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787059
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис
PS: запрос с first обычно используют с order by, иначе вернуться любые 10 записей
Еще минуту подумал и вспомнил что недавно написал кучу запросов select first 500, без order by, а сортировал на клиенте и при recordcount=500 пользователю показывал предупреждение о том что он видит не все :).
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787076
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimДело в том, что мне не нужно первые десять записей, которые вернет запрос. Мне нужно узнать, возвратит ли запрос больше 10 записей.

select count(*) from table1 group by 1;

группировка занимает продолжительное время, и,
может быть можно сделать, что если при выполнении запроса сервер информикс собрал уже 10 записей, то прекратить выборку или что нибудь вроде этого.

select first 11 * from mytable where mycodition

если вернет 11 значит true :).
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787090
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис win-kimДело в том, что мне не нужно первые десять записей, которые вернет запрос. Мне нужно узнать, возвратит ли запрос больше 10 записей.

select count(*) from table1 group by 1;

группировка занимает продолжительное время, и,
может быть можно сделать, что если при выполнении запроса сервер информикс собрал уже 10 записей, то прекратить выборку или что нибудь вроде этого.

select first 11 * from mytable where mycodition

если вернет 11 значит true :).

а еще лучше select first 11 1 from mytable where mycodition
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787103
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня идет группировка(!). Группировка 4 млн. записей занимает время (!). При выполнении запроса (select count(*) from mytable group by field) окажется, что запрос возвратил 100 тыс. записей. Я же хочу чтобы информикс прекратил выполнение запроса, если уже (при выборке) записей больше 5000.

best regards,
win-kim
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787122
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimДело в том, что мне не нужно первые десять записей, которые вернет запрос. Мне нужно узнать, возвратит ли запрос больше 10 записей.

select count(*) from table1 group by 1;

группировка занимает продолжительное время, и,
может быть можно сделать, что если при выполнении запроса сервер информикс собрал уже 10 записей, то прекратить выборку или что нибудь вроде этого.

Чего-то ты не договариваешь. В данном запросе группировка не может занимать продолжительное время, т.к. группируется 1 запись, фактически это эквивалентно:
select distinct count(*) from table1
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787148
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimУ меня идет группировка(!). Группировка 4 млн. записей занимает время (!). При выполнении запроса (select count(*) from mytable group by field) окажется, что запрос возвратил 100 тыс. записей. Я же хочу чтобы информикс прекратил выполнение запроса, если уже (при выборке) записей больше 5000.

best regards,
win-kim
Ты нас запутал group by 1 <> group by field

т.е. уникальных значений в поле field > 5000
тогда select first 5001 distinct field from mytable и индекс по field

или на любое значение field count(*)>5000, тогда только твой вариант с группировкой но индекс по field поможет.
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787150
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты меня подтолкнул к мысли,
ладно я домой, сенкс большой!


best regards,
win-kim
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787245
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини за глупый возможно вопрос:
Мне информикс позволит выполнить
select first 10 count(*) from mytable group by 1,2
в процедуре?

Я сделал так
if exists(select first 10 count(*) from mytable group by 1,2) then ...
информикс ругается.

best regards,
win-kim
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787272
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimИзвини за глупый возможно вопрос:
Мне информикс позволит выполнить
select first 10 count(*) from mytable group by 1,2
в процедуре?

Я сделал так
if exists(select first 10 count(*) from mytable group by 1,2) then ...
информикс ругается.

best regards,
win-kim

group by 1,2 -- это чего такое? 1 = count(*), а 2 = чего такое?

Поля надо явно писать select first 10 a,b,count(*) from mytable group by 1,2
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787314
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ведь могу написать так:
select count(*) from mytable group by a,b;

------------
у меня получается:
select count(*) from t1 group by a,b;
и
select first 1000 count(*) from t1 group by a,b;
выполняются одинаковой продолжительностью по времени.

best regards,
win-kim
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787433
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimЯ ведь могу написать так:
select count(*) from mytable group by a,b;

------------
у меня получается:
select count(*) from t1 group by a,b;


но не group by 1,2
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787450
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я согласен это я для скорости :), извини за неточность.
Так все таки как мне быть?

best regards,
win-kim
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787459
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimя согласен это я для скорости :), извини за неточность.
Так все таки как мне быть?

зависит от того чего ты хочешь.

автор
1. уникальных значений в поле field > 5000
тогда select first 5001 distinct field from mytable и индекс по field

2. или на любое значение field count(*)>5000, тогда только твой вариант с группировкой но индекс по field поможет.
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787474
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно быстро проверить сколько записей возвратит мой запрос.

как я пониманию:
select first 100 count(*) from t1 group by a,b;
информикс сначала группирует все данные, а потом показывает первые 100, или я ошибаюсь?

best regards,
win-kim
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787478
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
win-kimМне нужно быстро проверить сколько записей возвратит мой запрос.

как я пониманию:
select first 100 count(*) from t1 group by a,b;
информикс сначала группирует все данные, а потом показывает первые 100, или я ошибаюсь?

best regards,
win-kim

Да. Индекс t1(a,b) есть?

Но это тоже самое что select first 100 distinct a,b from t1 ?
...
Рейтинг: 0 / 0
Как ограничить количество записей при выборке?
    #32787565
Vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Your idea of count(*) is incorrect. Check this :


create table t1 (col1 int);
insert into t1 values (1);
insert into t1 values (1);
insert into t1 values (2);
insert into t1 values (2);

select count(*) from t1 group by col1
(count(*))

2
2

You need to use temp table for "group by" results, or you can use
select count(unique col1) from t1

I doubt there is a standard way to stop query after N records are selected.
"first N" does not work in stored procedures.
I testes something like this :
select case when count(unique col1) > 1
then 1
else 0
end
from t1

in a hope that optimizer would stop query processing after condition "count(unique col1 ) > 1" is met. Unfortunately, it doesn't.

What you can do is
1. insert into t2 select ...group ..
2. from another session, run monitoring script
select count(*) from t2

when that select returns more then 5000, you can interrupt the first session.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как ограничить количество записей при выборке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]