• Почему запрос на MySQL 8 выполняется в десятки раз медленнее?

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

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

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

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

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

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

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

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

    @Akina
    Сунуть в БД (скажем, Постгресс очень неплохо подойдёт) и вынуть уже деревом.
    Написано
  • Как можно ускорить выполнение 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, а просто найти ошибку в логе и скопировать сюда десяток строк текста.
    Написано
  • "Служба DHCP поставщика услуг Интернета работает неправильно", что я могу сделать чтобы это починить?

    @Akina
    Drno,
    я так понял что проблема на клиенте


    Автор говорит:

    При заходе на 192.168.0.1 (а в моём случае так же asusrouter.com) на первой вкладке можно увидеть следующую картину в строке состояния интернета:
    "Служба DHCP поставщика услуг Интернета работает неправильно."


    То есть сообщение об ошибке отображается на веб-странице окна статуса роутера в веб-браузере на клиенте. То есть встроенный веб-сервер роутера корректно сформировал страницу, положил на неё в том числе и сообщение об ошибке (ясен пень своё, а не клиентское!), отослал её клиенту, который принял эту страницу и отрисовал на экране.
    Написано
  • "Служба DHCP поставщика услуг Интернета работает неправильно", что я могу сделать чтобы это починить?

    @Akina
    И ещё одно. Пишу отдельным комментарием, потому что рассматриваю другую причину.

    Нам почему-то кажется, что проблема - между клиентом и роутером. Однако следует рассмотреть и случай, что на самом деле это проблема между роутером и провайдером. Ведь ошибка регистрируется не на клиенте, а на роутере!

    В качестве эксперимента предлагаю:
    - подключиться к роутеру кабелем
    - отключить совсем WiFi
    - поставить какой-либо из сервисов роутера на регулярное обращение в Инет (например, каждые 5 минут синхронизировать время с не-прововским стратумом)
    - отключить комп от роутера на пару часов (то есть клиентов нет вообще, только сервисы самого роутера)
    - подключиться кабелем и проверить в логах роутера, была ли эта ошибка в то время, когда на роутере клиентов не было

    Если выяснится, что ошибка в логах присутствует - следует обращаться с проблемой к провайдеру. И в первую голову выяснять, а нет ли у них каких-либо ограничений (например, фильтрация по МАС). Кстати, мы даже не знаем, как именно роутер подключается к прову...
    Написано