Задать вопрос
  • Хотелось бы узнать мнение болле опытных разработчиков?

    @Akina
    Евгений, 30к записей - уже вовсе даже не одна. Чанки - обычное дело.
  • Хотелось бы узнать мнение болле опытных разработчиков?

    @Akina
    Типичная XY-проблема.

    как лучше(правильнее) сделать так чтобы каждая итерация цикла отдельно записывалась в базу данных или сначала сформировать данные для value(как сделано по идее сейчас) и что будет производительнее ?

    Один длинный запрос на порядки производительнее и легче для сервера, чем несколько коротких.
  • Почему запрос на MySQL 8 выполняется в десятки раз медленнее?

    @Akina
    Снимите профили выполнения запроса для обоих версий сервера.
  • Как можно ускорить выполнение SQL запроса?

    @Akina
    Руслан .,
    Тут как оптимизатор посчитает правильным так исделает.

    Ну на то и декларативный язык..

    Если в выборку попадает 1% всех строк таблицы, то скан не быстрее.

    Это верно. Но частный случай, который обычно приходится хинтовать. В комментариях к одному из ответов автор показывает план. Там видно, что отбирается где-то 11-12% записей.

    А ещё - сервер неспособен предсказать количество записей, отвечающих многозначному критерию из WHERE IN. А если он тупо попытается получить оценку на основании index cardinality, то у него ничего хорошего не получится - ведь он получит приблизительное количество уникальных пар, чего маловато для оценки процента отбираемых записей, ибо у композитных индексов равномерность не сказать чтобы частое явление, и к тому же у него нет cardinality по префиксу (а из другого индекса он его брать не умеет). Да и не будет он предсказывать - чай, не JOIN оптимизирует.
  • Как можно ускорить выполнение SQL запроса?

    @Akina
    Руслан ., здрасьте, приехали. Ну да, пусть сервер отобрал по условию из WHERE. Но дальше-то он должен собрать записи в группы, чтобы считать агрегат. И что, он должен теперь выдёргивать для каждой группы записи из кусков индекса, то есть фактически пересортировывать фильтрованный набор? да нафиг ему это надо? гораздо быстрее простое сканирование.

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

    @Akina
    Sergey, а какая разница, кэшировать выборку просто так или как подзапрос?
  • Как можно ускорить выполнение SQL запроса?

    @Akina
    Может индекс поменять с product_id+prop_id на prop_id + product_id.

    По этому индексу сервер вынужден будет делать фуллскан. Это лучше, чем по всей таблице, но куда хуже, чем по отфильтрованным записям.
  • Как можно ускорить выполнение SQL запроса?

    @Akina
    Владимир Рыжов,

    Using where; Using index; - берётся индекс по product_id+prop_id, по нему выполняется фильтрация (отфильтровывается порядка 10 млн. записей) и подбор групп записей

    Using temporary; - подобранные группы записей копируются во временную таблицу, ибо их тупо много, и по завершении будут посчитаны агрегаты

    Using filesort - посчитанные агрегаты сортируются без использования индексов
  • Как можно ускорить выполнение SQL запроса?

    @Akina
    Dmitry Bay Данный метод и указанный лимит - они получены в основном эмпирически. Хотя если долго разбираться с тонкими настройками оптимизатора, то там точно есть необходимая информация. Кто-то лет несколько этим даже озаботился, но у меня концов от этого материала не осталось.

    Впрочем, достаточно просто по одной записи увеличивать количество значений в списке и сравнивать фактическое время выполнения и построенные планы выполнения запросов.
  • Почему адреса клиентов роутера начинаются не с нулей?

    @Akina
    если руками назначить конкретный адрес

    НИКОГДА не назначайте статические адреса в диапазоне выделения вручную. Используйте резервирование адресов по МАС-адресу.
  • Почему адреса клиентов роутера начинаются не с нулей?

    @Akina
    Вообще по правилам 0 и 255 зарезервированные адреса

    Вообще-то нет. Зарезервированные адреса - это самый первый (адрес самОй сети) и самый последний (адрес бродкаста сети) адреса. И они далеко не всегда 0 и 255...

    Исключения - сети с масками /31 и /32, в них зарезервированных адресов нет по вполне очевидным причинам (и в связи со специальной технологией использования).

    PS. Указанный раздел RFC говорит о классовых сетях. Что уже давным-давно и успешно игнорируется.
  • Почему адреса клиентов роутера начинаются не с нулей?

    @Akina
    роутер берет рандомно любой адрес

    Может брать. Но обычно - либо с начала, либо с конца диапазона выделяемых адресов. Вот чтобы именно рандомно - вообще ни разу не встречал.
  • Почему адреса клиентов роутера начинаются не с нулей?

    @Akina
    Я выставил LAN:

    ip: 10.0.0.0/8 (255.0.0.0)


    А какой диапазон указан в настройках DHCP pool? Адреса будут выдаваться только из этого диапазона. Причём роутер имеет право выдать любой ещё не задействованный адрес. И некоторые модели начинают выдавать адреса с конца диапазона (например, у меня так себя ведёт один из Микротиков).
  • Как можно ускорить выполнение SQL запроса?

    @Akina
    Угу... 85М записей, 20 критериев. Ты хоть прикинь, какой размер будет у такого представления...
  • Не заносятся данные в таблицу MySQL?

    @Akina
    kakkaifuetdava1,
    никакой ошибки нет как раз таки, все хорошо

    Вы получаете своё "всё хорошо" не на выполнение запроса на MySQL-сервере, а на выполнение функции mysqli_query на стороне PHP. При любых проблемах с запросом вы всё равно получите "всё хорошо" - ведь функция выполнена штатно и без проблем, от сервера получено сообщение об ошибке, всё штатненько.
  • Не заносятся данные в таблицу MySQL?

    @Akina
    Не надо жадничать.

    Первым делом - сохраните собираемый текст запроса в переменную
    $sql_text = "INSERT INTO `users` (`id`, `full_name`, `login`, `email`, `password`) VALUES (NULL, '$full_name', '$login', '$email', '$password')";

    и покажите, что получилось в переменной. Достаточно, например, кавычки в любом из значений, чтобы вместо легитимного запроса образовалась синтаксически неправильная хрень.

    Затем - обеспечьте получение и вывод сообщения о статусе операции (или сообщения об ошибке, если таковая приключилась).
  • Есть альтернатива роутеру или репитеру без подключения в электрическую розетку?

    @Akina
    Опишите подробно, а лучше ещё и нарисуйте, имеющуюся схему размещения оборудования, с указанием, где что установлено, где есть проводной/беспроводной сигнал и куда его надо передавать, где проложены витые пары, и где есть возможность запитаться. Для беспроводных участков (где надо передать трафик, но нет витой пары) укажите также расстояние и наличие прямой видимости либо наличие помех.
  • Как отслеживать и выводить обновления базы данных?

    @Akina
    mysql (как и любая другая реляционная СУБД) плохо заточена под event-driven архитектуру

    Ну насчёт "любая" - наверное, излишне категорично. Скажем, в том же Постгрессе есть LISTEN/NOTIFY. Опять же многие СУБД позволяют подключать внешние модули, которые вполне себе способны генерировать и слать уведомления.

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

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

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

    Полный текст ошибки выглядит так:

    Jan 5 15:13:09 WAN Connection: ISP's DHCP did not function properly.

    На сей раз в сообщении явно написано - ошибка на WAN-интерфейсе.

    Так что с этими логами наперевес идите к провайдеру и требуйте исправления ошибки.

    PS. Вообще можно было бы не постить на codepen, а просто найти ошибку в логе и скопировать сюда десяток строк текста.