Текущее время: Вт, июл 22 2025, 08:58

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: проверка наличия записей
СообщениеДобавлено: Пн, окт 22 2012, 00:23 
Специалист
Специалист

Зарегистрирован:
Пн, авг 27 2012, 13:27
Сообщения: 139
Как проверить , есть ли в табл. базы данных записи или она пустая, перед селектом?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 22 2012, 05:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
UP TO 1 ROWS

_________________
Ничто так не заразительно, как смех начальника...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 22 2012, 07:54 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
или SELECT SINGLE


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 22 2012, 10:03 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 14 2010, 13:26
Сообщения: 70
Откуда: Санкт-Петербург
Пол: Мужской
maksim2050 написал(а):
Как проверить , есть ли в табл. базы данных записи или она пустая, перед селектом?


База больше обрадуется простому запросу..
SELECT SINGLE COUNT(*)
FROM BSEG.

IF sy-subrc = 0.
<записи есть>.
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 22 2012, 11:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
необынчая проверка..
безусловный select .. up to 1 rows


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 22 2012, 13:41 
Директор
Директор

Зарегистрирован:
Вт, июл 18 2006, 17:44
Сообщения: 1001
Откуда: что и все
Пол: Мужской
lestat написал:
maksim2050 написал(а):
Как проверить , есть ли в табл. базы данных записи или она пустая, перед селектом?


База больше обрадуется простому запросу..
SELECT SINGLE COUNT(*)
FROM BSEG.

IF sy-subrc = 0.
<записи есть>.
ENDIF.


Повеселили! и SINGLE и COUNT и sy-subrc ... всё мимо.

_________________
Telegram-chat: PO, CPI-PI, java, groovy


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 22 2012, 13:45 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 20 2008, 16:29
Сообщения: 245
Откуда: RU->DE
Пол: Мужской
Стандартная кнопка "Число записей" в se11 делает так:

SELECT COUNT(*) FROM ... BYPASSING BUFFER.
P_COUNT = SY-DBCNT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 22 2012, 13:49 
Директор
Директор

Зарегистрирован:
Вт, июл 18 2006, 17:44
Сообщения: 1001
Откуда: что и все
Пол: Мужской
если таблица мандантонезависима то, например, оптимизатор оракла может (имеет право если не забанили) взять число записей из "словаря" (all_tables или как он там). Если таблица мандантозависима то он полезет в индекс как минимум (хуже если в таблицу).

Если сделать SELECT SINGLE или UP TO 1 ROWS то в том же оракле есть оптимизация FIRST_ROWS, кажется, которая "сверхбыстро" выдаёт первые строчки.

Вычислять неиспользуемое далее точное число строк здесь избыточно и даже вредно для СУБД.

_________________
Telegram-chat: PO, CPI-PI, java, groovy


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Вт, окт 23 2012, 08:50 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 20 2008, 16:29
Сообщения: 245
Откуда: RU->DE
Пол: Мужской
chumpa написал:
Вычислять неиспользуемое далее точное число строк здесь избыточно и даже вредно для СУБД.


Согласен. Просто привёл пример из стандарта, раз уж заговорили о правильности написания агрегирующих функций :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 29 2012, 09:24 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2011, 10:50
Сообщения: 197
maksim2050 написал(а):
Как проверить , есть ли в табл. базы данных записи или она пустая, перед селектом?


Интересно для чего это нужно?? Просто после селекта нельзя проверить считались данные или нет?? :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пн, окт 29 2012, 10:46 
Специалист
Специалист

Зарегистрирован:
Ср, май 04 2011, 23:46
Сообщения: 228
chumpa написал:
Вычислять неиспользуемое далее точное число строк здесь избыточно и даже вредно для СУБД.

почему вредно? лишняя нагрузка?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Чт, ноя 01 2012, 16:42 
Директор
Директор

Зарегистрирован:
Вт, июл 18 2006, 17:44
Сообщения: 1001
Откуда: что и все
Пол: Мужской
adropofmind написал(а):
почему вредно? лишняя нагрузка?


Да, лишняя нагрузка на СУБД.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Чт, ноя 01 2012, 17:07 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Цитата:
SELECT SINGLE COUNT(*)
FROM BSEG.


chumpa написал:
adropofmind написал(а):
почему вредно? лишняя нагрузка?

Да, лишняя нагрузка на СУБД.
Добавлю 5 копеек - в случае с BSEG это будет лишняя нагрузка на все - БД, сеть, сервер приложений. Ибо для подсчета количества записей эти все записи считываются на сервер приложений и там уже пересчитываются

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Пт, ноя 02 2012, 08:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
chumpa написал:
lestat написал:

База больше обрадуется простому запросу..
SELECT SINGLE COUNT(*)
FROM BSEG.

IF sy-subrc = 0.
<записи есть>.
ENDIF.


Повеселили! и SINGLE и COUNT и sy-subrc ... всё мимо.


SINGLE действительно лишний, а вот sy-subrc можно использовать таким образом, если в селекте указан COUNT( * ) и нет INTO.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проверка наличия записей
СообщениеДобавлено: Вт, ноя 06 2012, 11:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
select count(*) from bseg up to 1 rows.
check sy-subrc eq 0.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB