• Почему в Django преобразование List(QuerySet) такое медленное?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Roman Kitaev: Типов квартир уже около 140, а всего то в базе 20 серий домов для теста... И даже те с лукавством (некоторые схожие по проемам серии объединены в одну). В реальности же только панельных серий под 1000... а я планирую в будущем "добить" и многоэтажками по индивидуальным проектам.

    В общем, все сложно.

    Кстати, еще интересное наблюдение через django-debug-toolbar ... если есть raw запрос SELECT id, A FROM ... бла-бла-бла... а после через QuerySet запросить поле B, которого нет в SELECT, то Django порождает еще один маленький SQL-запрос по id в нужную табличку (кстати, как она понимает к какой табличке). Из-за этого тоже тормозило.
  • Почему в Django преобразование List(QuerySet) такое медленное?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Я не могу упростить базу. Собственно делаю агрегатор предложений пластиковых окон: oknardia.ru
    Таблица_с_адресами дома --> таблица_с сериями_домов --> таблица с типами квартир в сериях --> связь_многое_ко_многим_с_указанием количества <-- проемы_окон_с_размерами <-- ценовое_предложение_на_проем_с_описанием_индивидуальных_схем_открывания <-- набор_(пакет_профиль_фурнитура_допники_услуга) <-- офис <-- бренд == это только основные таблицы. А еще таблицы со стеклопакетами (там у них куча характеристик и нужно рейтинги) , с профилями и пр. И когда надо собрать все это вместе чтобы показать -- то все серьезно! И это еще нет ранжирования учитывающего что одни предложения хороши на южную сторону дома, а другие на северную...

    На счет RAW погорячился. Это как раз QyerySet[i].id каждый раз в отдельный SQL-чик превращается... Я его не заметил. т.к. он в функцию вынесен и написан был давно.
  • Почему в Django преобразование List(QuerySet) такое медленное?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Вы бы не ругались. а ответили по существу...

    А вот за django-debug-toolbar -- спасибо! До того я много мучился, не понимая почему ORM, создавая запрос такой-же как и я подставляю ему через raw, работает радикально медленнее? (особенно с рекурсивными SQL-запросвми). Теперь с помощью django-debug-toolbar увидел, что и raw запросы django выполняет коряво. Например SQL конструкцию WHERE что-то IN (1, 2,3, ... ,100) раскручивает как сто разных WHERE! Т.е. то, что чистый SQL через курсоры выполняет 150 ms, Django через raw выполняет 15 секунд!
  • Как сделать SQL UNION если в табличках не полные данные?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    nozzy: Если делать CROSS JOIN то записи из t2 (table_product), для которых нет соответствующих связей с t3 (table_link), не попадут в объединенную табличку. А раз не попадут, то и не ясно чему присвоить нуль... Так что по-любому t2 надо объединять с t3 через OUTER JOIN... Если в запросе есть еще таблицы для объединения (а они есть), то будет "пожиратель памяти".

    Я как-то в пятнадцатилетнюю давность делал похожее на Access через UNION. Там в качестве и t1, и t2 выступала одна и та же таблица (и именно поэтому без UNION было никак). Причем эта таблица была могучая! Строился рейтинг изменения читательских предпочтений в публикаций в отраслевом СМИ, а таблица было log-ом. Посетителей было много, а период довольно большим неделя/месяц/квартал... Т.к. я не программист, то писал запрос, помню, очень долго. Сейчас кажется, что месяца два!! И естественно все забыл.

    Тут я чувствую, что надо нечто похожее сделать. Сначала сделать две выборки SELECT с разными JOIN а после их слить...
  • Как сделать SQL UNION если в табличках не полные данные?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Вопрос: SWL сначала через WHERE отберет нужные записи из t1 и t2 а после все сольет? Таблицы t1 и t2 могут быть большими, и если будет наоборот (сначала сольет а после отберет записи) то будет плохо... :(
  • Как лучше хранить картинки?

    а через ls?.. И вообще, mc -- наше все!:)

    А вообще, мне кажется, что предложенный мной вариант неплох и для групповой работы с файлами через маски и т.п. ...
  • Как сделать SQL UNION если в табличках не полные данные?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Спасибо. Идею уловил. Хотя почему IFNULL(t3.qty, 0) возвращает ноль когда t3.qty = NONE не ясно. Раньше я делал два запроса t1+ t3 и t2 + t3 с нужными WHERE, и после делал UNION... А ваш вариант получается проще, так как достаточно все условия ко всем таблицам записать в один WHERE.

    Вопрос; памяти такое внешнее объединение сильно кушает? Или сначала выполняется WHERE а после LEFT OUTER JOIN?

    Заранее спасибо!
  • Почему глобальная переменная JavaScript во всех функциях видна, а в JQuery-плагине autocomplete нет?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Не важно. Все что присваевается window.filter по onclick не попадает в request.GET.['use_filter']. :(
  • Почему так сильно подорожали аккаунты pro на российских биржах фриланса? С чем это связано?

    При этом заказчиков желающих получить работу за отзыв меньше не стало
  • Как заставить Django через ORM к INNER JOIN добавлять GROUP BY?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    sim3x: Поддерживаю!

    Еще раз спасибо! Не первый раз, меня, чайника, учишь и выручаешь! Хочется пивом угостить! :)
  • Как заставить Django через ORM к INNER JOIN добавлять GROUP BY?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    sim3x: Наверное надо было, что-то вроде писать:
    select_related('BlogPost__OurUser__User_username')
    ?
    Но доступ через точку удобнее.
  • Как заставить Django через ORM к INNER JOIN добавлять GROUP BY?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Спасибо! Блин как все просто!
  • Как заставить Django через ORM к INNER JOIN добавлять GROUP BY?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    sim3x: они ужасно длинные. Если упрощать, то:
    from django.contrib.auth.models import User
    
    class BlogPost(models.Model):
        sPostHeader = models.CharField(
            max_length=128,
            verbose_name=u"Заголовок",
            help_text=u"Заголовок поста"
        )
        kBlogAuthorUser = models.ForeignKey(
            'OurUser',
            db_index=True,
            verbose_name=u"Автор",
            help_text=u"Автора поста в блог."
        )
    
    class OurUser(models.Model):
        kDjangoUser = models.ForeignKey(
            User,
            verbose_name=u"User",
            help_text=u"Базовый пользователь"
        )
        sUserPhone = models.CharField(
            max_length=32,
            null=True,
            blank=True,
            default="",
            verbose_name=u"Телефон",
            help_text=u"Номер телефона пользователя"
        )
  • Где взять подходящий корпус для электроники?

    Сергей Ноздрин: Чтобы не переплачивать за резак, можно купить лазерный гравер и заменить в нем лазер: ru.aliexpress.com/item/450nm-1W-1000mW-Blue-Laser-...

    Понятно, что такой лазер с металлом еще не справится, но с пластик уже будет резать вполне уверено (хотя и не быстро).

    С коробочками из короба для кабеля -- не намного больше, чем со станrом получится. Зато можно будет изготавливать реально дизайнерские штуки, и брать за них вполне реальные деньги. Если готовое устройство предполагается сделать коммерческим продуктом, то учитывая, что на рынке выживает или самое дешевое или премиально-дорогое, вариант дизайнерской коробочки не так и плох. Пусть на изготовление десяти коробочек будет уходить 6 часов (с сушкой и шлифовокой), зато продавть устройство в таинственном, полупрозрачным с дымкой и блестками корпусе можно сразу на 3-4 тысячи дороже :) Единственный минус -- такой корпус не устойчив к высоким температурам.
  • Будет ли проиндексирован url отсутствующий в sitemap.xml?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Natan: Смо-собой буду делать Sitemap Sitemap-ов... и 10Пи ссылок мне по любому хватит. Кроме того я хочу строить Sitemap по мере запросов пользователей. Пользователь что-то спросил. Я ему построил PIL-ом картинки, построил таблицы, закешировал и добавил в Sitemap... АИ все это на не сильно шустром сервере... А если сразу Sitemap всего-всего-всего сделать -- то поисковик заддосит сервис.
  • Будет ли проиндексирован url отсутствующий в sitemap.xml?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Natan: Т.к. ссылки появляются только после того как пользователь что-то там введет в интерфейс, а сервис ему построит ответ (а ответ надо проиндексировать, ведь то что один построил теперь и другим пригодится). В принципе я могу вычислить все возможные ответы, и построить карту в много миллионов страниц... Но только это же какая-то опупительная страница получится! Если предположить, что длинна URL 20 символов (что скромно) то общий размер HTML-файла карты сайта будет минимум 524Mb! Какой поисковик такое осилит?
  • Будет ли проиндексирован url отсутствующий в sitemap.xml?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Спасибо за ответ.

    Лень -- это проявление рациональности. :)

    Страниц которых поисковик не увидит --- что-то уже под полтора миллиона. И ожидается, что их будет никак не меньше 20-30 миллионов. И каждая такая страница содержит примерно по 10-15 ссылок на коммерческие спецификации (которые обновляются) и могут быть многостраничными. Я не представляю как сделать карту сайта для такого массива страниц..

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

    Есть страницы которых мало (блог, коммерческие условия, договора, список компаний участников). Таких страниц относительно мало. Скажем 2-5 тысяч всего (в пределе 20 тыс). И на них можно попасть через обычную навигацию, т.к. они не имеют гео-привязку.И городить огород sitemap.xml для не кажется рациональным (сейчас). Возможно после. Но уже сейчас хочется понять будет ли поисковик их индексировать.
  • Поиск наставника, рально ли?

    А подскажите, пожалуйста, irc толковый по django
  • Стартап после работы?

    C одной стороны -- соглашусь. Но есть и минус. Если говорят как и что делать, как правильно поступать, и где стелить соломку никогда не поймешь почему это надо делать так. Только на своем опыте можно получить ответы на все как и почему.

    А вообще, я слабо себе представляю стартап который может себе позволить кого-то обучать, рассказывать про лучшие решения и пр. Разве что стартап который поднял раунд и имеет хорошую устойчивость. Но обычно стартап это совсем другое.
  • Почему в шаблонах django нет чего-нибудь вроде встроенного тега set? И чем его заменить?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Я еще не настоящий сварщик.

    Почитал, вроде jinja2 поставить не сложно совсем, но я пока, как оказалось, и родных django-шаблонов совсем не знаю. В связи с чем страшновато неродные параллельно изучать.