|
|
|
Оптимизация запроса - нужна агрегатная функция FIRST()
|
|||
|---|---|---|---|
|
#18+
Всем привет ! Есть данные TovIdTovName DocNum 1NAME-1-LAST3 1NAME-1-PRE2 1NAME-1-FIRST1 2NAME-21 Нужно из них получить tovname из ПОСЛЕДНЕГО docnum, примерно получить TovIdTovName 1NAME-1-LAST 2NAME-2 Сейчас я это делаю Код: sql 1. 2. 3. 4. 5. Так же, вместо left join пробовал subselect-ом получать TovName - чуть быстрее. Как можно этот запрос ускорить ? Идеальный вариант, пройтись за раз через таблицу (так как можно сортировать входящие данныe order by TovId, DocNum desc): Код: sql 1. 2. 3. Но агрегатной функции First() на первый попавшийся запись - нету. Замечания: *В оригинале, таблица - внешний текстовой файл, 25 колонок VarChar, 150'000 записей, весит 130МБ. Делается импорт из внешнего източника. Нельзя создавать индексы *Уникальных TovId где-то 10% , или select с групировкой на TovId возвращает около 15'000 записей за 2 секунды. *SQL в примере работает почти час, что недопустимо. На каждый из этих 15'000 записей делается совпадение на всю таблицу из 150'000 строк, что бы найти правильный TovName *Входящие данные - корявые, возможно на один и тот же TovId, иметь различное TovName , поэтому берём TovName с последнего документа, поетому всё это головокружение. * FB 2.5.1 SuperServer, если имеет значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 21:29:47 |
|
||
|
Оптимизация запроса - нужна агрегатная функция FIRST()
|
|||
|---|---|---|---|
|
#18+
TPAKTOPA, Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 21:51:09 |
|
||
|
Оптимизация запроса - нужна агрегатная функция FIRST()
|
|||
|---|---|---|---|
|
#18+
Таблоид, спасибо, работает ! В одно чтение делается вся работа, с почти часа на две секунды стал выполнятся запрос ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 22:02:46 |
|
||
|
Оптимизация запроса - нужна агрегатная функция FIRST()
|
|||
|---|---|---|---|
|
#18+
TPAKTOPA, твой вопрос - из серии: "как сгруппировать значения по столбцу "Х", но вытащить в итоге поле, не участвовавшее в группировке, и соответствующее какому-то max()-значению (пример: получить значение курса на самую позднюю дату из какого-то диапазона)". Я тут начал собирать такие вопросы, вот: http://www.sql.ru/forum/1082475-a/voprosy-ot-nubov-ili-spisok-dlya-kollekcii-sovety-byvalyh?hl= Если у тебя есть что туда добавить - велкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 22:08:10 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38605168&tid=1563747]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
265ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 557ms |

| 0 / 0 |
