@dba_ru

Страница 225 из 718
Ilia
01.09.2017
13:54:39
А в чём разница, курсором или запросом ?

Fike
01.09.2017
13:54:59
и интересно, что будет быстрее, джойн только в дбспейсе, или курсор в приложении

Google
Ilia
01.09.2017
13:55:15
Sergey
01.09.2017
13:55:24
Да пожалуйста. С 2 до 3 ночи в момент перевода стрелок

Al
01.09.2017
13:55:31
А в чём разница, курсором или запросом ?
Разница будет в несколько порядков

Fike
01.09.2017
13:55:46
Курсоры так-то закрывать ещё надо.
как это вообще относится к дискусии?

Fike
01.09.2017
13:56:03
типа закрытие курсора имеет сложность O(n^3) или что?

Simon
01.09.2017
13:56:20
как это вообще относится к дискусии?
Решение не сказать, что надёжное.

Fike
01.09.2017
13:56:29
что в нем ненадежного?

Ilia
01.09.2017
13:56:31
JOIN я бы не писал, конечно, но для телепузиков NOT EXISTS слишком сложно, а на горе- таблице в 5тыщзаписей и так прокатит

Ребята, не затевайте спор ни о чём.

Simon
01.09.2017
13:57:35
что в нем ненадежного?
Откуда ты знаешь, что твой курсор откроют и закроют когда надо. Плюс всякие заебы runtime, плюс перехватить exception.

Fike
01.09.2017
13:57:50
кто будет закрывать мой курсор?

Google
Fike
01.09.2017
13:57:57
космический луч прилетит?

Simon
01.09.2017
13:58:22
космический луч прилетит?
Хз. Потому и сказал, что решение не очень.

Это вообще-то от СУБД Зависит. Там куча нюансов.
Я и не сказал, что решение говно.

Fike
01.09.2017
13:58:38
предлагаю транзакции еще запретить, потому что ее не закоммитить в приложении, то данные не сохранятся

Sergey
01.09.2017
13:58:49
Чего?
Была раньше такая беда в России пока от нее не оказались - зимнее и летнее время. Осуществлялось переводом часов в 3 ночи на час назад. Можно въехать в 2:15, выехать в 2:45. Перевести в 3:00 часы на час назад на 2:00 . Въехать тепреь по новому времени в 2:20 и выехать допустим в 2:50

Fike
01.09.2017
13:59:00
можно забыть схватить эксепшен, можно забыть закрыть транзакцию, разницы-то

Simon
01.09.2017
13:59:53
можно забыть схватить эксепшен, можно забыть закрыть транзакцию, разницы-то
Я привел примерно, почему курсоры - не очень. Проще 2 поля в записи.

Пример

Fike
01.09.2017
14:00:51
иначе бы этот вопрос тут не подняли вообще

Simon
01.09.2017
14:02:02
их нет
Да успокойся, охуенно решение, использовать курсоры. Продолжай.

Al
01.09.2017
14:02:46
Fike
01.09.2017
14:03:28
ты так ни одного убедительного аргумента против курсоров и не привел

Fike
01.09.2017
14:04:18
но можешь добиться той же функциональности (за исключением уровней изоляции), выгребая какое-то количество записей по лимиту

Simon
01.09.2017
14:05:02
А ты попробуй свой запрос и сравни.
О запросах пока ни слова не было.

Google
Al
01.09.2017
14:09:32
О запросах пока ни слова не было.
Да. но в целом довольно все весело. Типа давай сделаем хитро вымученый запрос в базу через джоины и сравнения. Пусть работает. А потом удивимся когда внезапно клиентов набежит. Хотя выбрать и сравнить в приложении получается на несколько порядков быстрее, но кого это волнует

Ilia
01.09.2017
14:10:54
ты так ни одного убедительного аргумента против курсоров и не привел
ДАвайте я приведу. Зачем курсор, если можно БЕЗ КУРСОРА ? На самом деле спор ни о чём, потому что в зависимоти от СУБД и обстоятельств автору может понадобится жёстко курсор или наоборот жёстко запрос.

Fike
01.09.2017
14:11:32
ему пока требуется только небольшая помощь в поиске документации по оконным функциям (

потому что с ненулевой вероятностью это все-таки можно сделать с помощью окна

Ilia
01.09.2017
14:12:08
Ну, тоже вариант.

Danil
01.09.2017
14:12:27
можно, но не лучший вариант

Ilia
01.09.2017
14:12:47
По производительности только разницы никакой... Что запрос, что оконная, что курсор

Fike
01.09.2017
14:13:07
Эм, а что вы имеете против? Я до сих пор не очень понимаю, как это сделать, но что может быть лучше оконки-то для такого?

Ну, кроме возвращения в прошлое и записывания данных в нужном формате

Ilia
01.09.2017
14:14:17
Запрос - джойн, оконка и курсор - однократный скан
Это ты так вот, без СУБД, без структуры таблиц, без планов , да ? ТОЧНО ЗНАЕШЬ?

Danil
01.09.2017
14:14:51
скан-то однократный, но все остальное все равно будет грузить сервер.

Fike
01.09.2017
14:14:52
да ты серьезно что ли

Danil
01.09.2017
14:15:06
я бы на уровень приложения их вынес карочи

Ilia
01.09.2017
14:15:06
Я серьёзно.

Fike
01.09.2017
14:15:17
что такое грузить? набивать оперативу? да, будет, как и в других случаях

Ilia
01.09.2017
14:15:21
На самом деле видимо мы решаем разные ещё задачи.

Я решаю задачу ВЫДАТЬ ВСЕ ВЫЕЗДЫ, @etkee , видимо, ПРОВЕРИТЬ ОДИН

Fike
01.09.2017
14:15:58
чего

Simon
01.09.2017
14:16:18
Google
Simon
01.09.2017
14:16:45
Констрейнтом

Fike
01.09.2017
14:16:59
запретить машинам въезжать меньше, чем через два часа?

Danil
01.09.2017
14:17:26
что такое грузить? набивать оперативу? да, будет, как и в других случаях
у сервака она все же не резиновая) а в зависимости от субд и версии еще и ограничения на ее размер могут быть неприятные. в итоге в какой-то момент все равно придется переносить логику на уровень сервера приложений или вообще клиентского

Fike
01.09.2017
14:17:50
и что сделает приложение?

разместит у себя в памяти? well that's a solution

Simon
01.09.2017
14:18:02
Ilia
01.09.2017
14:18:18
Danil
01.09.2017
14:19:20
разместит у себя в памяти? well that's a solution
свой кусок, в своей нотации. а с серваком их несколько сотен работает например.

Simon
01.09.2017
14:20:02
Fike
01.09.2017
14:20:16
отлично, теперь кроме требования к N оперативы для данных у нас есть еще требование на f(N) машин

и еще f2(N) оперативки для самих приложений

Simon
01.09.2017
14:21:23
Это пиздец какой-то для заполнения 1 таблицы размазывать данные по узлам.

Fike
01.09.2017
14:21:40
У выноса в отдельное приложение есть один большой плюс - это снимает нагрузку с сервака. Но обычный скан ничего серваку не сделает.

Danil
01.09.2017
14:21:42
стоп) речь идет о ситуации, когда эти приложения и так уже есть

тут выше кто-то джойнить таблицу саму на себя собирался, а вы говорите обычный скан..)

Al
01.09.2017
14:25:25
А можно просто в приложении считать. Машина заезжает назад. Пишем в 3 колонку время сколько ее не было. А дальше выбираем по 3 колонке че хотим. Хоть все машины кто меньше минуты выезжал

Ilia
01.09.2017
14:26:37
У выноса в отдельное приложение есть один большой плюс - это снимает нагрузку с сервака. Но обычный скан ничего серваку не сделает.
По любому задача O(N**2) (для "выдать все выезды"). Наличием правильного индекса можно вывести в O( N * log N), т.е. почти линейно по всем выездам. Ну, хреновенько, но такая задача...

Fike
01.09.2017
14:27:06
Возвращаемся к дискуссии про джойны и сканы

Если делать однократный скан и держать агрегацию в памяти / сбрасывать ее на диск, то это O(N)

Google
Ilia
01.09.2017
14:29:12
Поднобнее...

Al
01.09.2017
14:29:36
То есть спроектировать бд под запросы это не вариант я так понимаю

Fike
01.09.2017
14:29:57
Поднобнее...
ты просто идешь по записям и держишь в памяти кто когда в последний раз выезжал, ну

Al
01.09.2017
14:30:17
Нужно что бы больше джоинов и запросы похитрее. Иначе никто не узнает как круто ты можешь sql

Ilia
01.09.2017
14:32:24
ты просто идешь по записям и держишь в памяти кто когда в последний раз выезжал, ну
Память не лопнет ? Я как бы конкретную задачу решаю. Ту, что автор вопроса задаёт. Таблица-лог въезд/выезд (или две таблицы), надо выявить выезды.

Fike
01.09.2017
14:33:16
а что там такое после слэша и "ержать агрегацию в памяти"

Danil
01.09.2017
14:40:53
а можно еще на триггеры + табличку текущего состояния всю эту логику повесить ?

Rookie
01.09.2017
14:49:51

Страница 225 из 718