Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Найти различия в запросах  [new]
wtfgod
Member

Откуда:
Сообщений: 3
Добрый день!
Никак не могу справиться с заданием. Нужно найти оптимальный запрос

/*==============================================================*/
/* Table: C_DICTIONARY */
/*==============================================================*/
create table C_DICTIONARY (
ID NUMBER not null,
CODE VARCHAR2(20) not null
constraint CKC_CODE_C_DICTIO check (CODE = upper(CODE)),
NAME VARCHAR2(200),
MAIN_CVD_ID NUMBER,
TABLE_NAME VARCHAR2(200),
constraint PK_C_DICTIONARY primary key (ID)
)
/

/*==============================================================*/
/* Table: C_OBJECTS */
/*==============================================================*/
create table C_OBJECTS (
ID NUMBER not null,
CODE VARCHAR2(20) not null,
DATC DATE not null,
DIC_ID NUMBER,
STATUS NUMBER(3),
NOTE VARCHAR2(1000),
PARM VARCHAR2(4000),
SORT NUMBER,
NAME VARCHAR2(200),
NAM2 VARCHAR2(200),
constraint PK_C_OBJECTS primary key (ID)
);

/*==============================================================*/
/* Index: C_OBJECTS_01 */
/*==============================================================*/
create index C_OBJECTS_01 on C_OBJECTS (
DIC_ID ASC
);


alter table C_OBJECTS
add constraint FK_C_OBJECT_REF_18239_C_DICTIO foreign key (DIC_ID)
references C_DICTIONARY (ID);

--оцените 2 SQL запроса, возвращающих одинаковый набор данных
--какой из них является более оптимальным

select c.* from c_objects c
where GetMainCode(c.dic_id) = 'ORG';

select c.* from c_objects c
where c.dic_id = getdicid('ORG');
19 ноя 13, 16:58    [15156080]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
SergINI
Member

Откуда: Нью-Васюки
Сообщений: 6787
wtfgod,

А где исходники GetMainCode(), getdicid()?

Я конечно догадываюсь что там может быть внутри, а вдруг там что-то не совсем адекватное?
19 ноя 13, 17:07    [15156160]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
Буриданов осёл
Guest
Да тут один запрос оптимальнее другого!
19 ноя 13, 17:09    [15156178]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
wtfgod
Member

Откуда:
Сообщений: 3
SergINI,

Это все,что есть( сам уже голову сломал,что можно из этого вообще понять
19 ноя 13, 17:10    [15156184]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
Zeratulnn
Member

Откуда:
Сообщений: 85
wtfgod,

Ты какими-нибудь фейковыми данными заполнил бы и посмотрел.

А внутри getdicid и GetMainCode написал бы что-нибудь простое.
19 ноя 13, 17:12    [15156199]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
Зачётка
Guest
Невдомёк мне заполнять
Лучше я пойду гулять
Что такое GetMainCode
мне до сессии наср..ть
19 ноя 13, 17:19    [15156272]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
lLocust
Member

Откуда:
Сообщений: 338
wtfgod,

Ну, чисто теоретически, оптимальнее второй запрос, т.к. возможно используется индекс. НО!!!!!!
для того что бы их нормально оценить, нужны планы, нужно знать когда собиралась статистика, сколько записей с dic_id=getdicid('ORG') от общего количества. Нужны тексты getdicid и GetMainCode!!! и т.д.

Откуда вопросик? из универа вестимо?
19 ноя 13, 18:01    [15156625]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
wtfgod
Member

Откуда:
Сообщений: 3
lLocust,

Спасибо,я тоже склонялся ко второму запросу.

А вопрос с работы. С собеседования
19 ноя 13, 18:03    [15156636]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
wtfgod
А вопрос с работы. С собеседования
думаю, правильнее ответить, что недостаточно деталей, т.к. даже помимо самих текстов функций еще играет роль и наполнение таблиц :)
21 ноя 13, 13:00    [15167670]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
wtfgod
lLocust,

Спасибо,я тоже склонялся ко второму запросу.

А вопрос с работы. С собеседования

часто вопросы много говорят о вопрошающих - например каких грибков они намедни (причем, по местному обыкновению) поели
вы бы подумали - насколько оно вам надо
21 ноя 13, 13:27    [15167856]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
orawish
wtfgod
lLocust,

Спасибо,я тоже склонялся ко второму запросу.

А вопрос с работы. С собеседования

часто вопросы много говорят о вопрошающих - например каких грибков они намедни (причем, по местному обыкновению) поели
вы бы подумали - насколько оно вам надо
некоторые прогеры с многолетним стажем об этом вообще не думают
им
что to_date(field, <маска>) = :p_date
что field = to_char(:p_date, <маска>)
всё едино
21 ноя 13, 13:31    [15167884]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
andreymx
orawish
пропущено...

часто вопросы много говорят о вопрошающих - например каких грибков они намедни (причем, по местному обыкновению) поели
вы бы подумали - насколько оно вам надо
некоторые прогеры с многолетним стажем об этом вообще не думают
им
что to_date(field, <маска>) = :p_date
что field = to_char(:p_date, <маска>)
всё едино

ну лично мне то да, едино, ибо тут - несколько разная, но херня в обоих вариантах
:)
21 ноя 13, 13:39    [15167938]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
orawish
andreymx
пропущено...
некоторые прогеры с многолетним стажем об этом вообще не думают
им
что to_date(field, <маска>) = :p_date
что field = to_char(:p_date, <маска>)
всё едино

ну лично мне то да, едино, ибо тут - несколько разная, но херня в обоих вариантах
:)
сдаётся мне, что тут ты не прав:
есть таблица, чужая и с чужой БД, структура ейная тянется с 1990-ых
где поле дата в виде числа (или строки, уже не помню)
и есть по нему индекс
21 ноя 13, 14:12    [15168233]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
andreymx
orawish
пропущено...

ну лично мне то да, едино, ибо тут - несколько разная, но херня в обоих вариантах
:)
сдаётся мне, что тут ты не прав:
есть таблица, чужая и с чужой БД, структура ейная тянется с 1990-ых
где поле дата в виде числа (или строки, уже не помню)
и есть по нему индекс

и что? а давайте и числа будем хранить датами а строки числами. и индексов им всем им построим.
а, что там сколько лет тянется - я вас умоляю главное - не хранить тапочки в бачке унитаза
21 ноя 13, 14:20    [15168312]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
orawish,

да я согласен, что всё надо делатть хорошо и вовремя

но, как говорил Остап Бендер, "Жизнь диктует свои законы"
21 ноя 13, 14:41    [15168527]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
orawish
andreymx
пропущено...
сдаётся мне, что тут ты не прав:
есть таблица, чужая и с чужой БД, структура ейная тянется с 1990-ых
где поле дата в виде числа (или строки, уже не помню)
и есть по нему индекс

и что? а давайте и числа будем хранить датами а строки числами. и индексов им всем им построим.
а, что там сколько лет тянется - я вас умоляю главное - не хранить тапочки в бачке унитаза
или ты предлагаешь специально писать так, чтоб им, гадам, тошно стало?
:)
ну и юзверям заодно
21 ноя 13, 14:46    [15168578]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
andreymx
orawish
пропущено...

и что? а давайте и числа будем хранить датами а строки числами. и индексов им всем им построим.
а, что там сколько лет тянется - я вас умоляю главное - не хранить тапочки в бачке унитаза
или ты предлагаешь специально писать так, чтоб им, гадам, тошно стало?
:)
ну и юзверям заодно

да пусть живут.
я вам лично предлагаю не демонстрировать "хороших" решений на примерах затычек (пусть и не ваших, а чьих-то) косяков
21 ноя 13, 14:52    [15168645]     Ответить | Цитировать Сообщить модератору
 Re: Найти различия в запросах  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
orawish,

у меня таких затычек дохрена и больше
как-то читали тоже чужую БД, там время хранилось в UNIX-формате.
и тоже кто-то не подумал, с какой стороны предиката функцию рисовать
Время чтения было соответствующим
21 ноя 13, 15:14    [15168874]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить