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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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