16-й: Все сообщения за 11 Декабря 2014 года

 
ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

16-й

аксакал
★★
Ну, и кстати:

я.у.> Я хочу проплыть от Омска до Тюмени и обратно.

На реальной реке, т.е. с глубинами, течением, сложным рельефом дна и русла, моторчик в 2,5 местами будет натурально до жопы. Особенно когда "обратно" плыть. На коренной Волге, скажем, резинка c 5 лошадями в основном двигается туда, куда её несет течка и ветер, а не туда куда рулит драйвер резинки. Если вдруг непогода раздуется, можно соснуть неприятностей полной грудью.
 

16-й

аксакал
★★
я.у.> Человек = 1/7 лошади. Лошадь = 7 человекам. Мотор 2.5 л.с. это 17 (семнадцать) человеческих сил.
я.у.> Если лодку может гнать 1 человек, неужели 17 человеков будет ей мало.

Мало конечно будет. Считай, что твои 17 человек гребут чайными ложками. Лодку один человек может гнать в штиль, без течки и недолго. На него подуй как следует и будет он на месте шкрябаться. Поддай обратным течением, и будет его тащить упрямо на стрежень жопой вперед.
С мореходность такой скорлупки надо иметь возможность в любой момент дрыснуть в берег.
 

16-й

аксакал
★★
я.у.> КПД винта сопоставим с КПД весел. Причем тут чайные ложки?

При том, что через винт ты эти лошадиные силы не можешь полноценно реализовать.

я.у.> Течение тут тоже не причем, оно изменяет скорость лодки относительно берега, но не относительно воды.

Лодка у тебя движется относительно воды. Если тебе срочно надо к берегу, а ты попал в свальное течение от берега и против ветра, то с таким моторчиком к берегу ты не подойдешь. Особенно по волне, когда винт будет периодически из воды выниривать.

я.у.> Я ж не черное море пересекаю. На реке с мореходностью всё в порядке.

Попасть на реке в метровую волну - плевое дело. Разгуляться такой волне - полчаса делов при соответствующем ветре. Набрать полную лодку воды при этом дело пары минут.
Опять же, у тебя условие до 200 кг грузоподъемности. Это 2,5 м в длину где-то, с чего ты, кстати, взял 4 метра?
 

16-й

аксакал
★★
Luchnik> select ID from table1 t1 where t1.size < 10000
Luchnik> and not exists (select t2.ID from table2 t2 where t2.ID = t1.ID)

Это первое, что стоит попробовать. Самое простое.
А вообще полезно знать корреляцию t1 и t2.
Если она низкая и есть индексы по id обеих таблиц, то:

select t.id
from
(select t1.ID from table1 t1
inner join table2 t2
on t2.ID = t1.ID) t inner join table1 tt on t.id = tt.id
where tt.size < 10000

Внутренний запрос здесь он сделает по merge join, т.к. оба входа у него отсортированы, на выходе будет немного записей, которые добьет по size. Это микрософак как я понимаю? На оракле я б внутри написал select t1.ROWID, а на MS SQL не помню, если индекс по id кластерный то смысла нет.
 

16-й

аксакал
★★
hcube> Причем по мере того, как уровнь жизни будет падать (а он БУДЕТ) - поддержка стремительно съежится.

С какого б хрена? Любители хамона дрогнут, думаешь? Небось даже они соображают, что мировое потребление нефти это мухой не подымет, а значит все сущее, кроме, так и быть, подорожавших западных кредитов останется на месте.
Т.е. скороспелая альтернатива такова: хамон на усугубление корпоративных долгов, вкупе с чуством, что нам опять насрали полные руки супостаты.
Я невысокого мнения о нашем коллективном народном разуме, но это уже перебор.
 

16-й

аксакал
★★
yacc> Там NOT IN стоит - в этом-то и прикол :)

Посыпаю чувствительные места, и точно, cтоит :)

Значит захинтовать его, гада, каким-нибудь hash anti-join, чтоб он за каждой записью не бегал в подзапрос.
 
Это сообщение редактировалось 11.12.2014 в 17:19

16-й

аксакал
★★
yacc> На MS-SQL с хинтами плоховато :)
yacc> там бы я использовал времянку, что-то типа такого
yacc> CREATE TABLE #t ( ID int, CONSTRAINT [#IQ] UNIQUE ( ID ) )
yacc> INSERT #t
yacc> SELECT ID FROM table1 WHERE size < 10000
yacc> DELETE t1
yacc> FROM #t t1
yacc> INNER JOIN table2 t2 ON t1.ID = t2.ID
yacc> после этого в #t - искомый набор ID

Не, ну я настаиваю! Это ж природная редкость, когда два входа с покрывающими индексами под merge.

select t.id
from
(select t1.ID, t2.ID AS id_table2 from table1 t1
left join table2 t2
on t2.ID = t1.ID) t inner join table1 tt on t.id = tt.id
where t.id_table2 IS NULL AND tt.size < 10000
 

16-й

аксакал
★★
я.у.>> Винт ладно я отолью сам из бронзы.
userg> :big/podstolom:

Винт лучше из золота лить. В камни встрянешь - редуктор цел останется.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru