Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
Помогите пожалуйста! Необходимо ограничить количество выводимых записей, допустим в таком запросе: данный запрос возвратит 1000 записей: select count(*) from table1 group by 1; задача заключается, узнать возвратит ли запрос больше 10 записей, и при превышении лимита прекратить выборку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:05 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
win-kimПомогите пожалуйста! Необходимо ограничить количество выводимых записей, допустим в таком запросе: данный запрос возвратит 1000 записей: select count(*) from table1 group by 1; задача заключается, узнать возвратит ли запрос больше 10 записей, и при превышении лимита прекратить выборку. Если не использовать возможности клиента, то: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:12 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
win-kimПомогите пожалуйста! Необходимо ограничить количество выводимых записей, допустим в таком запросе: данный запрос возвратит 1000 записей: select count(*) from table1 group by 1; задача заключается, узнать возвратит ли запрос больше 10 записей, и при превышении лимита прекратить выборку. Данный запрос вернет 1 запись. Но то что ты хочешь очень похоже на select first 10 * from mytable PS: запрос с first обычно используют с order by, иначе вернуться любые 10 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:13 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
Дело в том, что мне не нужно первые десять записей, которые вернет запрос. Мне нужно узнать, возвратит ли запрос больше 10 записей. select count(*) from table1 group by 1; группировка занимает продолжительное время, и, может быть можно сделать, что если при выполнении запроса сервер информикс собрал уже 10 записей, то прекратить выборку или что нибудь вроде этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:21 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис PS: запрос с first обычно используют с order by, иначе вернуться любые 10 записей Еще минуту подумал и вспомнил что недавно написал кучу запросов select first 500, без order by, а сортировал на клиенте и при recordcount=500 пользователю показывал предупреждение о том что он видит не все :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:21 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
win-kimДело в том, что мне не нужно первые десять записей, которые вернет запрос. Мне нужно узнать, возвратит ли запрос больше 10 записей. select count(*) from table1 group by 1; группировка занимает продолжительное время, и, может быть можно сделать, что если при выполнении запроса сервер информикс собрал уже 10 записей, то прекратить выборку или что нибудь вроде этого. select first 11 * from mytable where mycodition если вернет 11 значит true :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:23 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:26 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
У меня идет группировка(!). Группировка 4 млн. записей занимает время (!). При выполнении запроса (select count(*) from mytable group by field) окажется, что запрос возвратил 100 тыс. записей. Я же хочу чтобы информикс прекратил выполнение запроса, если уже (при выборке) записей больше 5000. best regards, win-kim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:29 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
win-kimДело в том, что мне не нужно первые десять записей, которые вернет запрос. Мне нужно узнать, возвратит ли запрос больше 10 записей. select count(*) from table1 group by 1; группировка занимает продолжительное время, и, может быть можно сделать, что если при выполнении запроса сервер информикс собрал уже 10 записей, то прекратить выборку или что нибудь вроде этого. Чего-то ты не договариваешь. В данном запросе группировка не может занимать продолжительное время, т.к. группируется 1 запись, фактически это эквивалентно: select distinct count(*) from table1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:32 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
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 поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:41 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
ты меня подтолкнул к мысли, ладно я домой, сенкс большой! best regards, win-kim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:42 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
Извини за глупый возможно вопрос: Мне информикс позволит выполнить 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 16:07 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 16:12 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
Я ведь могу написать так: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 16:23 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
win-kimЯ ведь могу написать так: select count(*) from mytable group by a,b; ------------ у меня получается: select count(*) from t1 group by a,b; но не group by 1,2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 16:52 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
я согласен это я для скорости :), извини за неточность. Так все таки как мне быть? best regards, win-kim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 16:57 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
win-kimя согласен это я для скорости :), извини за неточность. Так все таки как мне быть? зависит от того чего ты хочешь. автор 1. уникальных значений в поле field > 5000 тогда select first 5001 distinct field from mytable и индекс по field 2. или на любое значение field count(*)>5000, тогда только твой вариант с группировкой но индекс по field поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 16:59 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
Мне нужно быстро проверить сколько записей возвратит мой запрос. как я пониманию: select first 100 count(*) from t1 group by a,b; информикс сначала группирует все данные, а потом показывает первые 100, или я ошибаюсь? best regards, win-kim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 17:04 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
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 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 17:07 |
|
||
|
Как ограничить количество записей при выборке?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=32787565&tid=1609163]: |
0ms |
get settings: |
6ms |
get forum list: |
7ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 290ms |

| 0 / 0 |
