Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
13.11.2015, 13:18
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
Есть таблица в которую записываются данные о расположении абонента: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Подскажите, можно ли составить запрос так, чтобы мне возвращались последние данные от каждого абонента? Если просто сделать такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
то я получаю, для каждого абонента, когда последний раз эти данные были. Только ID и время. А мне нужно получить еще и координаты какие были на тот момент. Сейчас сделал через процедуру: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Только мне кажется это изврат какой-то ну и долго считается. Можно это сделать одним запросом, как думаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 13:33
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 13:35
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
AndreyShimну и долго считается а индексы нужные есть? и зачем это (gd.TimeSession = :TimeSession) AND (gd.AbonentId = :AbonentId) когд у тебя первичный ключ ID есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 13:37
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
А вообще смотря по соотношению как часто ты пишешь и как часто считаешь. Можно и столбец завести, с признаком последнести данной строчки, или отдельную таблицу AbonentID -> ID (gsmdata pk) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 13:40
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
Arioch Код: sql 1. 2. 3. 4. 5.
Так не получается. Не выполняется даже отдельно внутренний запрос: Код: sql 1.
Ошибка: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 13:48
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
AriochА вообще смотря по соотношению как часто ты пишешь и как часто считаешь. Можно и столбец завести, с признаком последнести данной строчки, или отдельную таблицу AbonentID -> ID (gsmdata pk) Сейчас есть отдельная таблица ActualInfo, в которую я пишу последние данные. На AfterInsert таблицы GsmData я или добавляю, или обновляю в ней данные. Но так, как в GsmData данные сыпятся штук по 100 в секунду, растет количество версий записей в ActualInfo. И через какое-то время вся база начинает тормозить. Для сборки мусора приходится по таймеру раз в какое-то время делать Код: sql 1.
Так, в принципе, все работает. Только мне кажется есть более простые пути без доп таблиц и дублирования данных. Вот ищу. 6-) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 15:10
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
AndreyShim, насколько понимаю нужны оконные функции (в тройке они есть) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 16:21
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 17:03
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
Naf, Вот это то, что нужно. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 17:04
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
m7mAndreyShim, насколько понимаю нужны оконные функции (в тройке они есть) Ну на 3-ку пока не хочется переходить. Но про них я почитаю... Пасиб! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 17:33
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
AndreyShim, ктати, можно ли считать, что ID мнонотонно возрастает ? тогда Код: sql 1. 2. 3. 4.
просто потому что на PK уже есть индекс Интересно, сможет ли FB2 для внутреннего запроса использовать индекс descending(AbonentID, ID) ...соотв для предыдущего запроса - descending(AbonentID, TimeSession) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 18:04
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
Ariochктати, можно ли считать, что ID мнонотонно возрастает ? тогда Код: sql 1. 2. 3. 4.
Да, вы правы, так и есть. Действительно, ко времени можно и не привязываться. AriochИнтересно, сможет ли FB2 для внутреннего запроса использовать индекс descending(AbonentID, ID) ...соотв для предыдущего запроса - descending(AbonentID, TimeSession) Про это не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 19:19
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
AndreyShim, так проверьте ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2015, 20:26
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
AndreyShim, тип float используется осмысленно, или по незнанию? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.11.2015, 13:41
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
AriochAndreyShim, так проверьте Что-то я не очень понял, что вы имеете в виду. :/ ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.11.2015, 13:52
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
kdvAndreyShim, тип float используется осмысленно, или по незнанию? Вы имеете ввиду, что float 32 бита? Или что-то еще? Для хранения координат это от -180 до 180 - 5 знаков после запятой вроде хватает. Изменения в 5-м знаке это меньше метра. У нас координаты не такие точные приходят, чтобы их хранить в двойной точности. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.11.2015, 14:12
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
AndreyShimИзменения в 5-м знаке это меньше метра. У нас координаты не такие точные приходят, чтобы их хранить в двойной точности. Используйте NUMERIC(8,5) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.11.2015, 14:58
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
AndreyShimВы имеете ввиду, что float 32 бита? я имею в виду, что float это вещественное число с крайне низкой точностью, которое сейчас мало для чего годится. И в нем, кстати, некоторые числа (дробные) даже и не могут храниться, они тут же искажаются. Например, 1.88 сразу превращается в 1.87999999523163. http://www.ibase.ru/devinfo/round.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.11.2015, 15:23
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
Naf Используйте NUMERIC(8,5) kdvя имею в виду, что float это вещественное число с крайне низкой точностью, которое сейчас мало для чего годится. И в нем, кстати, некоторые числа (дробные) даже и не могут храниться, они тут же искажаются. Например, 1.88 сразу превращается в 1.87999999523163. http://www.ibase.ru/devinfo/round.htm Понял. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.11.2015, 16:47
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
kdvя имею в виду, что float это вещественное число с крайне низкой точностью, которое сейчас мало для чего годитсяТрёхмерная графика - не так уж мало ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.11.2015, 17:30
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
Basil A. Sidorov, Звучит как "приборы - 120" В какой части трёхмерной графики всё завязано на float? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.11.2015, 18:37
|
|||
---|---|---|---|
|
|||
Помогите в оптимизации запроса. |
|||
#18+
Объекты трёхмерной графики разбиваются на полигоны (треугольники). Координаты полигонов задают вещественными числами. Как правило - именно float. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.11.2015, 02:52
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
Basil A. Sidorov, а при чем тут полигоны? У автора таблица называется GSMDATA, т.е. речь идет про GSM, и координаты устройства (названия столбцов тоже намекают). Для координат рекомендуют вещественное с точностью 10 цифр и 6 после точки. Т.е. numeric(10,6). Float имеет точность в 7 цифр, так что в 10 цифр он уже не попадает. Double precision - 15 цифр. Так что лучше использовать numeric(10,6), который будет храниться в bigint. Понятно, конечно, что и float покатит. Но для определенных координат он будет вносить свою погрешность. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.11.2015, 09:20
|
|||
---|---|---|---|
Помогите в оптимизации запроса. |
|||
#18+
Basil A. Sidorov, Пиши сразу, что в D3DX. А так, в общем - неправда. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=40&mobile=1&tid=1562508]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 156ms |
0 / 0 |