Ответы пользователя по тегу SQL
  • Как оптимизировать запрос с INNER JOIN и ORDER BY по нескольким таблицам?

    @bioroot
    Давно не пользовался MySQL, однако напишу по старой памяти. У вас очень много одиночных индексов, а в вашем случае этого уже не достаточно. Надо переходить минимум на двойные. К примеру, в таблице bank вас интересуют только slug и id. Но в случае одинарных индексов обработка вашего запроса будет происходить примерно следующим образом.
    1. MySQL видит ключ slug, лезет в хранилище индекса и находит там указатель на соответствующую строку с данными.
    2. MySQL смотрит, а что ему ещё нужно из этой таблицы. Оказывается, нужен id для джойна с таблицей branch.
    3. MySQL лезет в хранилище данных, находит там строчку (или строчки) по указателю из 1-го пункта и из них вынимает id.

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

    Вообще следующая ступень оптимизации обычно сводится к поиску удачных сочетаний множественных индексов. И не забывайте, что строить их дороже одинарных и второе и далее значение не используются, если в запросе нет первого.
    Ответ написан
  • Как это так? Команда Update сделала Truncate таблицы?

    @bioroot
    Во-первых, у вас после G-60019 кавычка не закрыта. Во-вторых, надо смотреть, что у вас за записи в базе. Но никто не запрещает заменить UPDATE на SELECT и самому увидеть какую выборку сделает запрос:
    SELECT CASE WHEN product_sku = 'G-60019' ... END AS test_field  FROM brand_sku_increment;
    Ответ написан