powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по странному предикату в запросе
15 сообщений из 15, страница 1 из 1
Вопрос по странному предикату в запросе
    #39398480
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной биллинговой системе разработчики используют запрос примерно такого вида:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT /*+ INDEX(m svrm_service_idx) */  
    a.periodic_acct_id, 
        s.login, 
        m.moment, 
        SUM(money), 
    m.tariffel_id, 
    m.service_amount 
FROM     
    bm_service_money    m, 
    bm_periodic_acct    a, 
    services            s, 
    bm_charge_type      ct 
WHERE s.customer_id = :id
AND m.periodic_acct_id = a.periodic_acct_id 
AND s.service_id = m.service_id 
AND     a.moment >= date'2016-01-01' 
AND     a.moment <= date'2017-02-01'
AND ct.mnemonic = 'postpaid' 
AND m.charge_type_id <> ct.charge_type_id 
GROUP   BY a.periodic_acct_id, s.login, m.moment, period_start, period_stop, m.tariffel_id, m.service_amount 
ORDER   BY a.periodic_acct_id 



Мне этот фрагмент непонятен:
Код: plaintext
1.
2.
AND ct.mnemonic = 'postpaid' 
AND m.charge_type_id <> ct.charge_type_id 

Чем он может быть вызван?
Разработчик просто ошибся или это такой косвенный способ подсказки оптимизатору?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398506
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Alibek B.,

скорее всего, какой-то предикат джойна еще потеряли
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398524
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему?
Просто в отчет включаются все виды (оплаты?) кроме 'postpaid'
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398546
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровПросто в отчет включаются все виды (оплаты?) кроме 'postpaid'
Но почему таким странным способом?
Почему не
Код: plaintext
1.
2.
AND m.charge_type_id = ct.charge_type_id
AND ct.mnemonic != 'postpaid'
?
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398550
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например есть еще mnemonic IS NULL и он тоже должен участвовать в выборке
Сделай два плана и сравни, в конце концов, делов-то
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398578
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Но почему таким странным способом?
Почему неСмахивает на крипто-программирование: чтоб сопровожденцы не догадались.
Я бы подобную мысль формулировал через NOT IN.
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398660
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicAlibek B.Но почему таким странным способом?
Почему неСмахивает на крипто-программирование: чтоб сопровожденцы не догадались.
Я бы подобную мысль формулировал через NOT IN .когда сопровождаешь систему, которую 40 человек писали 15 лет, то понимаешь - чем проще и понятнее, тем лучше. Я тоже написал бы через NOT IN
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398830
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы такое точно не писал бы через not in

С высокой вероятностью - charge_type_id - первичный ключ, а mnemonic - альтернативный ключ для charge_type_id.
У меня бы рука не поднялась написать здесь Not in
Может быть -
Код: plsql
1.
m.charge_type_id <> (Select ct.charge_type_id From bm_charge_type ct Where ct.mnemonic = 'postpaid'  )



Но, конечно, получающиеся планы хотелось бы видеть глазом, хотя бы невооружённым,
и полные определения таблиц.
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398839
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyУ меня бы рука не поднялась написать здесь Not inХозяин - барин.
boobyи полные определения таблиц.Кто как девицу видит, тот так её и танцует.

P.S. Кто-то обобщает на будущее, а кто-то зачем-то пялится в планы.
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398841
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

на будущее исходный вариант уже обобщен, способом неотличимым от NOT IN.
Вопрос в том, что надо иметь в голове, чтобы видеть будущее с не уникальным ct.mnemonic
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398843
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyчто надо иметь в голове, чтобы видеть будущее с не уникальным ct.mnemonicБизнес требования или способы их реализации меняются. И мнемоника может стать перечислением. Но жажда планов (накуя?) мешает об этом задуматься.
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398846
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby...

на будущее исходный вариант уже обобщен, способом неотличимым от NOT IN.
...
пожалуй так:
способом, вероятно лучшим, чем not in, по крайней мере на сегодня.
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398852
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic...
Бизнес требования или способы их реализации меняются. И мнемоника может стать перечислением .
В таком будущем сегодняшний NOT IN не отличим от сегодняшнего скалярного подзапроса.

ElicНо жажда планов (накуя?) мешает об этом задуматься.
Это слишком космического уровня знание, что делать никогда ничего не надо.
Потому что если ты не будешь ничего делать сегодня, то завтра оно будет лучше работать само.
А если будешь что-то делать сегодня, то завтра оно перестанет работать.

В некоторых ситуациях бывает желательно, чтобы хорошо работало не только завтра, а, по возможности уже сегодня, хоть как-нибудь.
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398855
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyВ некоторых ситуациях бывает желательно, чтобы хорошо работало не только завтра, а, по возможности уже сегодня, хоть как-нибудь.Это оправдание выдуманного тезиса.

А девиз "Давайте-ка я ускорю какую угодно вашу хрень" - это эникейный путь в ничто.
...
Рейтинг: 0 / 0
Вопрос по странному предикату в запросе
    #39398859
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

разве бывает путь, который заканчивается чем-то таким разумным, которое отлично от ничто?

Миллиарды людей считают именно ничто единственной стоящей целью любого пути.
И всю жизнь готовят себя к тому, чтобы в нужный момент попасть именно в ничто, а не промахнуться и попасть куда-либо еще.

Насчет любой - да, это от узости кругозора.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по странному предикату в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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