• Как изменить запрос для ускорение работы?

    @Akina
    Смотрю я на это всё - ну бред голимый... особенно когда дошёл до автогенерируемого запроса - не удержался, заржал.

    Чисто для демонстрации - фрагмент этого "автогенерёжу":
    CASE ...
    
        WHEN (CASE  WHEN s2.p30_current = 0.52
                    THEN 10
                    WHEN ProductCount = 0.65
                    THEN 11
                    WHEN ProductCount = 0.77
                    THEN 12
                    ELSE 0
                    END ) = 0.33
        THEN ...
  • Как убрать двойной nat в локальной сети?

    @Akina
    Роутер - или перевести в режим моста, или (лучше) вообще убрать.

    А вот аппаратный NAT модема между pfSense и Интернетом - оставь.
  • Как вставить в таблицу, используя внешний ключ?

    @Akina
    каким запросом можно вставить в таблицу


    Запросом INSERT. К.О.
  • Почему SELECT MAX(uuid) возвращает A-22-999 когда в базе есть A-22-1000?

    @Akina
    Если надо сравнивать значения такого вида как числовые, то числовую компоненту следует хранить с ведущими нулями. A-22-999 и A-22-1000 сравниваются некорректно, а вот A-22-0999 и A-22-1000 - как нужно.

    задрали эти уникальные идентификаторы, 2 год воюем с ними, что посоветуешь для такого формата? Формат утвержден заказчиком изменить формат uuid не можем

    Говно вопрос. Каждый компонент хранится в отдельном поле, либо всё одном формализованном (вон как Adamos пишет чуть выше). Полный идентификатор собирается в вычисляемом поле или в прямо запросе. Можно даже пользовательскую функцию под это нарисовать.
  • Какую конфигурацию выбрать для построения сети?

    @Akina
    Игорь, я так понимаю, что слова, выделенные жирным шрифтом, Вы не стали читать?

    А если прочитали, но тем не менее съёрничали - значит, не поняли...
  • Как правильно составить запрос?

    @Akina
    Вот оно тебе надо - с часами возиться? прибавь 4 часа (или отними 20)... ночная смена получится от 00:00 до 12:00, дневная с 12:00 до 24:00.

    group by 2,1

    Ага... это при том, что в выходном наборе всего одно поле...
  • Как отимизировать запрос с 2-мя JOIN и нулевыми значениями по втором JOIN?

    @Akina
    galaxy,
    ну, только второй джойн.

    Почему это? оба джойна левые, так что по-любому в выходном наборе будут все записи из requests. Единственное, что привносят эти джойны - это дубликаты, но от задачи "получить столько дубликатов каждой записи из таблицы, сколько имеется связанных записей в другой таблице" на текущей предметной области (если, конечно, имена таблиц - говорящие) откровенно попахивает идиотизмом.

    А мускуль сам умеет лишние джойны убирать?

    Убирать - нет. А вот fake join - запросто.
  • Как отимизировать запрос с 2-мя JOIN и нулевыми значениями по втором JOIN?

    @Akina
    если джоины оставить, но в select убрать cities.title то отрабатывает быстро

    Если в select убрать cities.title, то джойны тоже можно убрать. По причине абсолютной бессмысленности их наличия.

    запрос начинает сильно тормозить ... то отрабатывает быстро

    Сравнение производительности двух разных запросов с различающейся логикой - занятие по-дурацки бессмысленное.

    Как отимизировать запрос

    Без полных CREATE TABLE всех таблиц, EXPLAIN запроса, а ещё лучше - хотя бы минимальной статистики данных (для всех условий - связывания, отбора, группировки, сортировки и пр.) вопрос не имеет смысла.
  • Как решить проблему с collation в БД?

    @Akina
    nottobacco,
    набор правил сравнения === collation, нет?

    Да. То есть collation влияет исключительно на сравнение (и, как следствие, ещё и на сортировку). И абсолютно никак не влияет на отображение - это забота charset.

    Объясните что вы имеете в виду под «Надо при создании БД явным образом задавать все опции создаваемой БД».

    Я имею в виду, что надо наконец, ну хотя бы теперь, озаботиться чтением официальной документации.

    CREATE DATABASE Statement. Особое внимание обратить на create_option.

    +--------------------------+--------------------+
    | Variable_name | Value |
    +--------------------------+--------------------+
    | character_set_client | latin1 |
    | character_set_connection | latin1 |
    | character_set_database | utf8mb4 |
    | character_set_filesystem | binary |
    | character_set_results | latin1 |
    | character_set_server | utf8mb4 |
    | character_set_system | utf8mb3 |
    | collation_connection | latin1_swedish_ci |
    | collation_database | utf8mb4_0900_ai_ci |
    | collation_server | utf8mb4_0900_ai_ci |
    +--------------------------+--------------------+

    Отмеченные значения - ошибочны. character_set_% - все сменить на UTF8MB4. collation_% - на любой (а лучше - на нужный), совместимый с UTF8MB4, но непременно для всех один.
  • Какую конфигурацию выбрать для построения сети?

    @Akina
    Игорь,
    Мои предшественники 20 лет назад думали примерно так же, как вы сейчас описываете. Когда адресов стало не хватать и фирма стала стремительно развиваться, встал вопрос расшириться не останавливая бизнес процессы от слова вообще.

    Значит, они допустили ошибку, когда использовали недостаточно широкие подсети без "свободных" подсетей между ними. Иначе простое расширение подсети за счёт расширения маски сразу превращает нерешаемую проблему в почти тривиальную.
  • Как решить проблему с collation в БД?

    @Akina
    вместо кодировки utf8mb4 collation utf8mb4_unicode_ci БД создаётся с кодировкой utf8mb4 collation utf8mb4_0900_ai_ci.

    А это последствия твоей собственной лени. Не надо ничего пытаться устанавливать. Надо при создании БД явным образом задавать все опции создаваемой БД, тогда не будет подобных проблем. То же относится к созданию таблиц и других объектов БД.

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

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

    Вот ты только что явно написал: "мы (должны) к нему подключаться с сервера". Теперь посмотри, что ты раньше говорил: "Как подключиться к socks серверу". Сплошной винегрет.

    Так кто где - сервер в локалке за NAT и клиент снаружи, или наоборот? Кто к кому подключается, кто инициализирует соединение - клиент к серверу или сервер к клиенту?
  • Как подключиться к хосту в локальной сети извне этой локальной сети?

    @Akina
    Вариант с port forwarding на роутере, работает, но не подходит по требованиям.

    Озвучьте эти требования.

    Также - проходит ли по этим требованиям помещение сервера в DMZ?

    Альтернативные подходы возможны.

    Внешний проксирующий сервер, с которым целевой сервер устанавливает постоянное соединение.
  • Почему не проходит решение?

    @Akina
    Мое решение: взять все листья, последовательно удалять их.

    Ну то есть жадный алгоритм. Который любит давать неоптимальные решения. Поэтому на каждом шаге следует чётко выбирать, какие именно листья из возможных удалять. Для чего с каждым листом нужно хранить количество листьев у его "родителя". И удалять в первую очередь те группы листьев, у которых это число кратно заданному K.

    Решение не проходит 19-й тест (мой ответ 2, нужно 3).

    Где исходные данные этого теста?
  • Как удалять повторение дефисов?

    @Akina
    Заменять два тире на один - и повторять, пока длина строки не стабилизируется.

    PS. Копируя код с кириллицей из VBA - переводи раскладку на русскую перед нажатием Ctrl-C.
  • Почему если по запросу в бд что-то найдено, то запрос выполняется быстрее?

    @Akina
    FanatPHP, дык у него всё равно там LIMIT 0, 26, пофиг на ограничения пыхадмина. И опять же MySQL при наличии ORDER BY сперва выбирает всё, а потом сортирит и лимитит.
  • Почему если по запросу в бд что-то найдено, то запрос выполняется быстрее?

    @Akina
    FanatPHP, а я согласен с предыдущим оратором.

    В зависимости от статистики при разных критериях выборки планировщик может выбирать разный порядок сканирования таблиц, и неудивительно, что один из них оказывается более производительным, чем другой. Может, нужен вульгарный STRAIGHT_JOIN...

    Вот и хотелось бы увидеть EXPLAIN двух запросов, с разными критериями и сильным различием во времени выполнения. Для подтверждения (или нет) гипотезы.

    Ну и вообще, плакаться на производительность, и при этом не дать ни CREATE TABLE, ни EXPLAIN (я уж молчу о статистике данных) - это как-то непрофессионально.