Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2
  • 3
  • 4

ТЕМА:

Re: Подскажите как правильно написать SQL запрос в Oracle 12 года 9 мес. назад #2835

нет, индекса я не строил.
Запрос byl na Solaris F-15
First_Rows здесь не поможет т.к. тебе надо ускорить group by.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Подскажите как правильно написать SQL запрос в Oracle 12 года 9 мес. назад #2836

  • Rita
  • Rita аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Спасибо получено: 0
Pond
Ну так вот я и хочу переписать запрос так, чтобы он возвращал только одну нужную мне строку. Составной индекс конечно есть. Но курсор мне кажется будет работать все-таки дольше чем select * from (....) where rownum < 2 хотя даже этот результат по быстродействию не устраивает.
а что в Вашем запросе дает условие
where 1=1 ??

John Smith
А что за хитрый такой хинт /*+ PUSH_SUB(v)*/ ?
12,5 сек это много, максимум это 5. При том что в реальной таблице это условие может затрагивать до 5-ти столбцов в которых есть не только number но и varchar2.

Да и все забыли про for update, а он нужен....
Сдается мне надо действительно переписать запрос как-то похитрее, я почти уверена, что это можно сделать, но вот как...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Rita.

Re: Подскажите как правильно написать SQL запрос в Oracle 12 года 9 мес. назад #2837

Это я так, выпендриваюсь:)Сказывается привычка собственного структурирования запросов, немного облегчающая (мне облегчающая) их отладку.

Вот что-то мне подсказывает: если запрос может вернуть большую чать записей из таблицы, то вроде как FULL SCAN может быть самым дешевым вариантом. Другой вариант- сканирование только индекса, это тож можно попробовать сделать. Если еще такая штука под названием Fast Full-Index Scan, может она пригодится:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Подскажите как правильно написать SQL запрос в Oracle 12 года 9 мес. назад #2838

А вот такой вариант как?

select * from test
where to_char(col1)||to_char(col2)||to_char(col3) =
(select max(to_char(col1)||to_char(col2)||to_char(col3))from test
where COL1 < 3
and COL2 < 5
and COL3 < 2)

Если в столбцах значения больше чем однозначные то дополнить строчки слева 0 до максимальной длины ...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Подскажите как правильно написать SQL запрос в Oracle 12 года 9 мес. назад #2839

select*from test a where
col1=(select max(col1) from test x where col1<3)
and col2=(select max(col2) from test b where b.col1=a.col1 and b.col2<5)
and col3=(select max(col3) from test c where a.col1=c.col1 and a.col2=c.col2 and c.col3<2)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Подскажите как правильно написать SQL запрос в Oracle 12 года 9 мес. назад #2840

  • Rita
  • Rita аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Спасибо получено: 0
не пашет :(((
для таблицы
1 1 1
2 2 2
5 5 5

вернуться должна
2 2 2

а у тебя no rows selected...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
  • 4
Время создания страницы: 0.226 секунд