
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
29.04.2003, 18:32
|
|||
|---|---|---|---|
|
|||
Как оптимальнее выбирать MAX(date) |
|||
|
#18+
Есть ли большая разница в реализации задачи при таких условиях Необходимо выбрать по товару <сумму> с MAX(<дата>) Есть таблица <код товара>, <дата>, <сумма> Выборка происходит внутри процедуры 1. Вариант SELECT <код товара>, <дата>, <сумма> FROM <таблица> WHERE <код товара> = 12 ORDER BY <дата> DESC И в курсоре выбирать первую запись. Запрос шуршит по индексу COST небольшой, количество записей которые выбираются вряд ли будет превышать когда либо 50. 2. Вариант SELECT <код товара>, MAX(TO_CHAR(<дата>,'yyyy-dd-mm')||' '|| <сумма>) FROM <таблица> WHERE <код товара> = 12 GROUP BY <код товара> COST тоже небольшой, индексы подхвачены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.04.2003, 18:49
|
|||
|---|---|---|---|
|
|||
Как оптимальнее выбирать MAX(date) |
|||
|
#18+
Я, обычно, выбирал таким способом: select <Код>,<Дата>,<Сумма>, from <Таблица> A where A.<Дата>=(select MAX(B.<Дата>) from <Таблица> B where A.<Код>=B.<Код>) Результат всегда был отличный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.04.2003, 20:24
|
|||
|---|---|---|---|
|
|||
Как оптимальнее выбирать MAX(date) |
|||
|
#18+
Как ты думаешь что быстрее, select f1, MAX(f2) from tbl1 или select f1, f2 from tbl1 A where A.f2=(select MAX(B.f2) from tbl2 B where A.f1=B.f2) И насколько по плану будет различие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.04.2003, 21:36
|
|||
|---|---|---|---|
|
|||
Как оптимальнее выбирать MAX(date) |
|||
|
#18+
создать индекс по полю <дата>, в запрос включить хинт - по этому индексу с desc а раз нужна только строка с максимальной датой - добавить в условия - rownum<2 что то вроде SELECT /*+ INDEX_DESC ()*/ <код товара>, <дата>, <сумма> INTO V_<код товара>, :V_<дата>, V_<сумма> FROM <таблица> WHERE <код товара> = 12 AND ROWNUM<2; работает быстро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.04.2003, 10:23
|
|||
|---|---|---|---|
|
|||
Как оптимальнее выбирать MAX(date) |
|||
|
#18+
To fly С индексом интересная идея... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.04.2003, 15:34
|
|||
|---|---|---|---|
|
|||
Как оптимальнее выбирать MAX(date) |
|||
|
#18+
2 Dick Gonsales Немного неправильная постановка вопроса :) 1. В запросе используется только одна таблица <Таблица>. 2. В приведенном тобой примере не указана группировк (Oracle ругается ;)). 3. При использовании group by если в таблице содержится значительное количество строк - тормоза неминуемы. 4. В случае с выборкой одной записи (where <Код>=NN) - твой вариант предпочтительней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&tablet=1&tid=1990743]: |
0ms |
get settings: |
4ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
182ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 472ms |

| 0 / 0 |
