@ru_python

Страница 6953 из 9768
Андрей
05.11.2018
20:54:19
Кстати вспомнил про оконные функции

Вроде есть та что следующую строку возвращает

Tishka17
05.11.2018
20:54:54
Ух

Google
Tishka17
05.11.2018
20:54:58
Оконные это сильно

Сашок
05.11.2018
20:55:18
https://eax.me/python/

Андрей
05.11.2018
20:55:18
Ну да

В sqllite их в сентябре добавили

Нам уже прочитали лекцию

Я проспал

Tishka17
05.11.2018
20:56:17
Я про select x, (select x from tablename as t2 where t2.date > t1.date order by t2.date limit 1) from tablename as t1

Андрей
05.11.2018
20:56:40
Ух перегруз

Tishka17
05.11.2018
20:56:40
Что-то такое

Андрей
05.11.2018
20:56:53
В смысле по нагрузке

На субд

Tishka17
05.11.2018
20:57:32
Ну можешь оконные

Но их редко юзают

Google
Tishka17
05.11.2018
20:57:59
Ух перегруз
Было бы из чего выбирать

Андрей
05.11.2018
20:58:11
Допустим я использую cte

Как тогда перестроить?

Придумал

row_number

И join по условию l.id+1=r.id

А потом проверить тип

Дальше просто where с условием не равенства

И в select count(*)

Если 0 то всё ок

Иначе нет

Андрей
05.11.2018
21:01:34
where

Сори

Описка

Вот так индексы получил в таблице

select (select count(*) from EVENTS b where a.TIME >= b.TIME) as cnt, * from EVENTS as a

А это сама проверка

(with tmp as (select * from sorted_events where sorted_events.ROWI = EMPLOYEES.ROWI) select count(*) from tmp as a join tmp as b on a.cnt + 1 = b.cnt where a.WHAT = b.WHAT) = 0

Открыт для критики и предложения

Google
Tishka17
05.11.2018
21:38:52
И join по условию l.id+1=r.id
Никаких гарантий, что id будут подряд нет

Tishka17
05.11.2018
21:40:21
Хз

Проверь, работает или не

Андрей
05.11.2018
21:40:38
Проверил

Выполняется

Повезло что в одно и тоже время не может быть события

А так

Да

Согласен

Говно костыль

Tishka17
05.11.2018
21:41:36
Да может и норм

Андрей
05.11.2018
21:41:56
При равных значениях будет бред

Tishka17
05.11.2018
21:41:59
Вообще, сравни с моим вариантом

Имхо, count будет дольше

Андрей
05.11.2018
21:42:50
Да

Я знаю

Хотя

Нет

Google
Андрей
05.11.2018
21:43:18
Сортировка

Каждый раз

А у меня один

Tishka17
05.11.2018
21:44:03
Ну хз. Планировщик может один раз все отсортировать

Андрей
05.11.2018
21:44:32
Меня смутила постоянрая сортировка

Admin
ERROR: S client not available

Tishka17
05.11.2018
21:44:34
А Каунт - точно полный проход каждый раз

Надо проверять. Я не так силен в бд

Андрей
05.11.2018
21:44:48
N*n*logn

А у меня n*n

Where раньше

Не полный

Tishka17
05.11.2018
21:45:34
Если сортировка будет один раз сделана - n*log n и останется

Не полный
У тебя же в каждом шаге новый вложенный count, не?

Андрей
05.11.2018
21:46:46
Если и будет оптимизация то только в крутых субд

Коррелирующий запрос

Только сначало where

Count бежит по отфильтрованным записям

Google
Tishka17
05.11.2018
21:48:32
Ну и что, что where. Он порядок сложности не меняет.

Толе число записей уменьшит

Андрей
05.11.2018
21:48:51
В контексте o большого нет

Но а так в половину меньше

Tishka17
05.11.2018
21:50:02
Короче, я за ордер с индексом. Там хоть есть шансы на оптимизацию

Вплоть до хранения постоянно отсортированной таблицы

Where тоже не мгновенный.

Мне надо одну запись найти, а тебе все

Андрей
05.11.2018
21:52:09
Это да

Я придумал рекурсивный запрос

Какраз всё пронумерует

Хотя не

Тоже фигня

Вот здесь оконные функции и нужны

Sfy
05.11.2018
22:38:28
Смотрите. Есть методы инстансов, они привязаны к self. Есть методы класса, они привязаны к cls. Есть статические методы, которые не привязаны ни к чему (не используют в себе ссылки на объект). Абстрактные методы, как я понял, это методы, которые лежат в самом базовом по отношению к данному классу классе, но при этом в нём не имплементированы. Зачем такое вообще нужно?

Зачем заранее придумывать метод для классов-наследников, который наследуется, как не имплементированный?

Страница 6953 из 9768