Виктор
17.05.2018
05:25:02
Если и так, то какое отношение к этому имеют разрабы?
Разрабы сидят на зарплате, у них есть четкие сроки. Свои косяки, пожалуйста, исправляйте во внеурочное время. Почему компания должна их ошибки.
aster
17.05.2018
08:09:56
это чат для нытья?
Vladislav
17.05.2018
08:10:26
только для нытья по базам
aster
17.05.2018
08:10:43
что можно сделать?
SELECT ORDERS.*
FROM ORDERS LEFT OUTER JOIN
ORDERSTRANSLOG ON ORDERS.ID_NUM = ORDERSTRANSLOG.ID_NUM
WHERE ORDERSTRANSLOG.TRANSFERED is null
ну кроме того, чтобы гвоздь в голову вбить тому, кто такое придумал
Google
Vladislav
17.05.2018
08:12:07
а что смущает то? нормальная вещь
хотя наверно where смущает
тут уже логику надо понимать
aster
17.05.2018
08:13:04
берет сначала все строки из orders, джойнит к ним log.
и там где лог не приджонился (нет его) - только те строчки выводим.
а строчек в orders - дохреналлиард
код приложения менять не могу (
но текст запроса - могу
Vladislav
17.05.2018
08:14:39
я хз что там с ddl, но на первый взгляд логика не такая
lost
17.05.2018
08:21:36
а по orders никакого селективного условия нет?
зачем весь охулиард брать
с квери да, проблем никаких нет, обычная проверка на exists
aster
17.05.2018
08:22:29
Google
aster
17.05.2018
08:22:38
потому и ною
lost
17.05.2018
08:22:48
Груздь
Vladislav
17.05.2018
08:23:11
ныть надо по поводу того, что на null проверяется не id связи
lost
17.05.2018
08:23:52
думаешь даст прирост?
Vladislav
17.05.2018
08:23:55
поэтому логика "и там где лог не приджонился" априори не работает, если id есть, а TRANSFERED null
lost
17.05.2018
08:24:32
ну да, это не совсем очевидено, вариант с id понадежнее будет
опять же, не зная ddl
Vladislav
17.05.2018
08:25:11
да даже если там is not null поле, все равно так не стоит писать
aster
17.05.2018
08:28:53
да не.
в orderstranslog либо вообще нет строчек, либо поле transfered уже заполнено (и они нам не нужны)
lost
17.05.2018
08:29:15
в логе же тоже охулиард?
aster
17.05.2018
08:29:22
угу
1-к-1
Михаил Власов
17.05.2018
08:29:48
Партиционировать ORDERS и потом выбирать из партиции, если oracle.
aster
17.05.2018
08:30:07
sql2k8
ладно. truncate - выход
Vladislav
17.05.2018
08:30:15
1-к-1
если 1:1, то зачем вообще лефтджоин?
Виктор
17.05.2018
08:30:49
Суть же выбора у которых нет соответствия
lost
17.05.2018
08:31:53
Meow
17.05.2018
08:32:11
Товарищи, что бы вы выбрали в качестве базы данных для месенджера?
Чисто ваше имхо
Google
Виктор
17.05.2018
08:32:57
Зависит от требований. В самых простых случаях можно вообще в файл писать
Meow
17.05.2018
08:34:26
Ну про файл ты загнул. Допустим будет хайлоад и миллионы пользователей.
Vladislav
17.05.2018
08:34:47
#каквыбратьбазуданных
1. Точные требования с рассчетом на будущее
2. Что умеем лучше готовить
Михаил Власов
17.05.2018
08:34:47
и смысл?
Странный вопрос. Смысл в том чтобы не лопатить всю таблицу, а только партицию. Если смысла нет, то не пользуйтесь)
Виктор
17.05.2018
08:34:58
Vladislav
17.05.2018
08:35:08
и это не требование
lost
17.05.2018
08:35:56
Meow
17.05.2018
08:36:14
Спрашиваю вашего мнения, что бы вы использовали в данном случае. Чисто сверический мессенджер в вакууме.
В качестве примера можно взять телегу
Ок, ясно
Vladislav
17.05.2018
09:03:15
Что стало ясно, если не секрет?
Вопрос из серии, какой яп выбрать для телеги
Ilia
17.05.2018
09:17:22
но текст запроса - могу
Ну, напиши через NOT EXISTS, но обычно все СУБД понимают такую хрень правильно и нормально оптимизируют.
aster
17.05.2018
09:44:53
вот так могу
select * from ORDERS where id_num not in (select id_num from ORDERSTRANSLOG)
но существенного прироста нет
меня бесит, что мне, чтобы выбрать несчастных 5 строк, надо перелопатить охулиард.
и от этого хочется уйти в запой
Google
Виктор
17.05.2018
09:53:58
пфф..оптимизатор вероятней всего переписал ваш запрос на тот же join
Вообще вопрос с запросом почему встал? Медленное выполнение, большая нагрузка?
aster
17.05.2018
09:55:12
Виктор
17.05.2018
09:55:56
План выполнения запроса какой?
aster
17.05.2018
09:57:11
походу единственным решением (ну кроме и правда транкейта, который не исключен) будет дополнение новым полем вроде "ignore", с проставлением в него галочек периодическим заданием.
ну и добавлением условия в исходный запрос.
Виктор
17.05.2018
09:57:33
Если поднимает все данные с диска. То как было уже предложено можно спастить партиционированием. Естественно, если соотношений существующих и отсутствующих записей удовлетворительное.
aster
17.05.2018
10:08:42
Ilia
17.05.2018
10:13:54
aster
17.05.2018
10:15:12