• Зачем нужен INNER JOIN в MySQL?

    @galaxy
    В mysql, как написал Rsa97, варианты эквивалентны. В стандарте SQL (и многих других СУБД) это не так.
    CROSS JOIN - используется без условия ON и действительно выполняет декартово произведение (так же работает запятая).
    INNER JOIN требует ON.

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

    Стоит запомнить, что SQL - язык декларативный (а не императивный). SQL запрос определяет, что надо сделать, а не как. Поэтому хотя и можно представлять себе работу его так, как вы описали, но в реальности почти всегда соединение будет происходить иначе и более оптимально (почитайте про nested loops, merge join, hash join и т.д.).
    Ответ написан
    3 комментария
  • Как организовать базу с тремя таблицами и связями многие ко многим?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Сервер: код, название, настройки
    Роль: код, название
    Настройки роли: код, код названия, код сервера, настройки

    Пользователь: код, имя
    Настройки пользователя: код пользователя, код настройки роли
    Ответ написан
    2 комментария
  • Как оптимизировать выборку из БД?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    SELECT q.id
    FROM questions.question q
    LEFT JOIN questions.question_translate_it qt ON q.id = qt.question_id
    LEFT JOIN questions.translate_questions tq ON q.id = tq.question_id
      AND tq.language_id = 8
    WHERE qt.question_id IS NULL
    WHERE tq.question_id IS NULL;
    Ответ написан
    1 комментарий
  • Какой порядок порядок полей выбрать при создании индекса MySQL?

    ayazer
    @ayazer
    Sr. Software Engineer

    Так вот, почему сначала в индексе надо сначала указывать age, если можно указать сначала gender и отсечь за одну операцию ~6000 строк (это примерно пол таблицы) и потом в этой половине искать уже по age что будет уже в 2 раза быстрее чем если строить индекс age_gender.


    а если сначала отфильтровать по age - то выйдет СРАЗУ откинуть не половину таблицы, а все кроме тех 200 записей. и потом используя gender - фильтровать не пол таблицы, а только этих 200 записей (а не 6000).

    т.е.
    gender, age -> по первому индексу получаем 6-8к записей, по ним фильтруем используя второй индекс
    age, gender -> по первому индексу получаем 200 записей, по ним фильтруем используя второй индекс (или в случае с low cardinality индексами может оказаться что быстрее просто просмотреть все записи)

    ну и стоить помнить что имея только комплексный индекс (gender, age) поиск по возрасту будет использовать полный перебор. в случае с индексом (age, gender) можно будет и искать по возрасту не указывая пол
    Ответ написан
    3 комментария
  • Как сделать неодинаковое количество записей в двух столбцах mysql?

    @zhaar
    Фигня такой подход - появится еще одна мадам, придется переделывать структуру таблицы?
    Делаешь 2 таблицы - users и messages
    users
    id, name

    messages
    userid, msgid, message

    и работаешь с ними через джойны.
    Ответ написан
    Комментировать
  • Головоломки помогают айтишникам улучшить мышление?

    search
    @search
    мама говорит что я особенный
    Головоломки по программированию очень неплохо помогают устроиться на нормальную работу.

    Оффтоп, лет 5 назад научился жонглировать. Может это накрут, но заметил как сильно выросла способность концентрироваться. Гораздо дольше могу удерживать внимание на предмете/задаче чем раньше. Вот например сейчас одновременно пишу этот комментарий, пишу код и еще и жонглирую.
    Ответ написан
    2 комментария
  • Как написать запрос TSQL?

    Planet_93
    @Planet_93
    Данные:

    5d679def8de92311191124.jpeg

    Запрос:

    SELECT
    T1.Id,
    
    (SELECT concat(T2.Name, '; ') 
    FROM dbo.Test AS T2
    WHERE T2.Id = T1.Id
    FOR XML PATH('')) AS Name
    
    FROM
    dbo.Test AS T1
    GROUP BY T1.Id


    Результат:

    5d679dfd51aae997147677.jpeg
    Ответ написан
    1 комментарий
  • Как перенести базу MSSQL Express 2012 на MSSQL 2008 R2?

    в студии на базе: Task -> Generate Scripts...
    там же есть возможность скриптовать данные
    Ответ написан
    5 комментариев
  • Почему сайт с простейшими sql запросами "валит" VPS уже при 50 активных посетителей?

    @Masterme
    Действительно. Какой-то глупый VPS. Разве может LIKE '%...' тормозить?
    Ответ написан
    Комментировать
  • На чем создать БД автосервиса?

    kotomyava
    @kotomyava
    Системный администратор
    Вы не попадёте в п.4 ни с чем, кроме ведения учёта вручную в экселе — бюджет совершенно не адекватен задаче…
    Ответ написан
    4 комментария
  • Упражнения с разбором по MySQL?

    simbajoe
    @simbajoe
    Не знаю, возможно вам поможет этот сервис, если привыкли писать процедуры и хотите писать именно запросы: sql-ex.ru/. Там неплохие упражнения с возрастающим уровнем сложности.
    Ответ написан
    1 комментарий
  • Самоучители по Assembler?

    barker
    @barker
    А я бы посоветовал Зубкова. Юров тоже котировался, помнится, но он какой-то сумбурный, имхо.
    Ответ написан
    1 комментарий
  • Проблема производительности 1С и MSSQL

    @xrd
    1. Дописать конфу так, чтобы в свободное время (ночью) регламентным заданием данные для тяжелых отчетов подготавливались, т.е. упрощалась структура данных, проводились расчеты. В результате человек будет получать уже сформированные данные. Судя по описанию — отчет не просто огромная простыня с данными и там есть что оптимизировать. Но 3-5 секунд — я бы не стал заморачиваться, у Вас пользователи разбалованы (=

    2. Если у Вас конфа работает не в режиме совместимости — посмотрите агрегаты, возможно выиграете некоторое количество времени после настройки. Не требует конфигурирования.
    Ответ написан
    Комментировать
  • Google play — обновление игр

    LeoCcoder
    @LeoCcoder
    я так понимаю вы создали игру (приложение).

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

    Все. У пользователей со временем появится уведомление и они зайдут в гугль плей, нажмут кнопку обновить и старое приложение удалится и установится новое.

    smart updates это технология для экономии трафика. пользователю из маркета передадут по возможности не весь новый apk, а только части, которые изменились. происходит это прозрачно для девелоперов (специально делать ничего не надо, гугль сам все сделает если получится)
    Ответ написан
    1 комментарий
  • MSSQL-запрос в PHP?

    gaelpa
    @gaelpa
    Как гипотеза: возможно, что проблема в Collation. Натыкался и решал коллега, так что слету пути проверки/решения подсказать не смогу.
    Ответ написан
    1 комментарий
  • Кто тестировал Оператор IN в MySQL? Насколько он быстр и есть ли альтернативы?

    @edogs
    Подойдите к проблеме с чуть более раннего места.
    Откуда берется массив? Из базы? Тогда может больше смысла подумать о сложном запросе?
    Или можно массив во временную таблицу загнать и ссылаться на нее.
    Ответ написан
    Комментировать
  • Как грамотно составить ТЗ на разработку АСУ БД?

    @densilvio
    Сочувствую вам. Предстоит гигантская работа — переход с устаревшей системы на новую — очень большой геммор. Рекомендую искать подрядчика который за это возьмется и проведет бесплатное предпроектное исследование. Первый контракт как раз и будет на составление ТЗ.

    Ну а уже второй — на выполнение работ по этому ТЗ (необязательно этим же подрядчиком).

    P.S. Если у вас все работы будут через госконтракты — все будет конечно сложнее…
    Ответ написан
    Комментировать
  • Как грамотно составить ТЗ на разработку АСУ БД?

    @rPman
    Если организация крупная (от 100 человек в штате… это абстрактное определение, вопрос просто в наличии денег) то для создания и поддержки индивидуальной ERP системы (любого типа) для защиты от vendorlock (а это норма для таких систем) лучшее что можно придумать — создать свой IT отдел.

    Отдел — это не приходящий один программист по вызову, а минимум три человека, лучше больше, с организованной текучкой кадров (т.е. постоянно должны появляться новые люди и кто-то уходить, иначе vendorlock будет обеспечен уже на уровне работников, хотя это менее страшно, особенно если разработка будет происходить хотя бы с нормальной организационной составляющей, как минимум наличии поддерживаемой документации).

    Поверьте, это уже выстрадано не одной организацией, особенно если это гос-конторы. Когда встает выбор, платить внешнему разработчику 1кк-10кк или платить те же деньги своим работникам в течении 1-3 лет. И поверьте, потребность в апгрейде системы будет всегда, не бывает статичных бизнеспроцессов. Внешний серьезный разработчик потребует не меньшие миллионы на добавление пары кнопочек и никуда вы не денетесь, свои же программисты под боком, а за наглость их можно уволить (помним про специально организованную текучку кадров), мало того, проконтролировать промежуточный результат. И самое главное, свои люди лучше разбираются в предметной области!

    Хорошо ВУЗ-ам, у них специалисты куются на автомате и текучка обеспечена (только до маразма доводить не стоит и нужен грамотный руководитель).

    Плохо то что не для всякой организации подобный подход легко реализуем (эффективно по затратам). Организациям поменьше будет сложно выделить и пару тройку ставок, при этом нагрузка на этих работников не равномерная, хорошо если ставки можно совместить (грузчик-тестер, бухгалтер-программист, менеджер по товарам — системный администратор), иначе придется топать в аутсорс (только не вздумайте ведущего программиста там искать, только свой под боком).
    Ответ написан
    6 комментариев
  • TaskManager с возможностью строить блок-схемы, UML диаграммы?

    ixSci
    @ixSci
    Нет конечно, кто будет скрещивать яйцо с трактором?
    Ответ написан
    Комментировать