@dba_ru

Страница 510 из 718
Виктор
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
а по orders никакого селективного условия нет?
в том то и дело. ни даты, нихрена.

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
Суть же выбора у которых нет соответствия

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

Вообще вопрос с запросом почему встал? Медленное выполнение, большая нагрузка?

Виктор
17.05.2018
09:55:56
План выполнения запроса какой?

aster
17.05.2018
09:57:11
походу единственным решением (ну кроме и правда транкейта, который не исключен) будет дополнение новым полем вроде "ignore", с проставлением в него галочек периодическим заданием. ну и добавлением условия в исходный запрос.

Виктор
17.05.2018
09:57:33
Если поднимает все данные с диска. То как было уже предложено можно спастить партиционированием. Естественно, если соотношений существующих и отсутствующих записей удовлетворительное.

Ilia
17.05.2018
10:13:54
меня бесит, что мне, чтобы выбрать несчастных 5 строк, надо перелопатить охулиард. и от этого хочется уйти в запой
Можно и так, но не обязательно будет прирост производительности. И ты не прав, что предполагаешь как-то, что запрос будет выполняться по какой то логике "СНАЧАЛА-ПОТОМ". Надо в план запроса смотреть, как он выполняется.

меня бесит, что мне, чтобы выбрать несчастных 5 строк, надо перелопатить охулиард. и от этого хочется уйти в запой
Реляционное вычитание — да, одна из самых сложных операций РСУБД, что же ты хотел-то?

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