![]() |
|
Модераторы: skyboy |
![]()
|
|
| Ybr |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.3.2010 Где: Москва Репутация: нет Всего: нет |
Доброго времени суток, господа!
По работе начал изучать PL/SQL. И в процессе написания одного запроса у меня появилась мысль, что туже функциональность обязательно можно реализовать проще, короче и красивее. Мой "некрасивый" запрос работает (sic!), но совершенно не нравятся его размеры. Интересно ваше мнение на тему: как можно сделать его короче. Объяснять, что делает запрос, не вижу смысла:
В процессе оптимизации пытался сделать вот так:
Но после первого же прогона понял, что оператор IN не умеет работать с шаблонами (т.е. результирующего набора от второго скрипта не было, а от первого - был). Каково ваше мнение: можно ли упростить запрос? |
||||
|
|||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
Единственный, на мой взгляд, рабочий способ -- вынести эту пачку констант в отдельное отношэние.
Здесь дело в том, что IN -- это глупый хак и и издевательство над минимальностью языка. Никаких массивов в языке SQL нет, а в диалектах, в которых есть -- это ересь. В реляцыонной алгебре как таковой место массивов занимают отношэния. Но строить отношэния in-place в запросе тожэ нетривиально (хотя и можно, через таблицу вроде dual и UNION ALL). |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Можно попробовать регексплайк. Но если работает - не понятно зачем пробовать.
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Ybr |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.3.2010 Где: Москва Репутация: нет Всего: нет |
Очень даже понятно За напоминание про регэкспы спасибо. Они очень весело смотрятся на том фоне, что у языка даже нет массивов))) Это сообщение отредактировал(а) Ybr - 18.2.2012, 18:33 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Тогда ищите уродство за пределами запроса. Если бизнес логика требует хардкода паттерна кода, или же приходится опирается на значение такого поля как label, или же поле, названное ishidden может принимать значение "пробел", это определенно означает, что структура данных крайне плохо организована. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |