Задать вопрос
  • Как оптимизировать сложный запрос на нагруженной базе MYSQL?

    @Akina
    Задавать вопрос и при этом не предоставить полные структуры всех таблиц? ну-ну...

    Про статистику данных я даже напоминать боюсь.
  • Как оптимизировать сложный запрос на нагруженной базе MYSQL?

    @Akina
    teranq,
    Скорость выполнения одинаковая

    Значит, нет подходящего индекса. Нужны:

    Task ( { status, type, provider, cat } , url_id )
    TaskFlow (executor_acc_id, url_id )

    В первом - первые 4 поля, что в фигурных скобках, могут быть в любом порядке. Желательно - в порядке снижения селективности поля.

    Ну и - я бы использовал такую форму условия:
    WHERE (task.status, task.type, task.provider, task.cat) = ('active', 'follow_profile', 'insta', 3)
    Серверу пофиг, но как бы нагляднее.
  • Что лучше выбрать Partitioning или вынос данных в другую базу (таблицу)?

    @Akina
    к таблице приёмы, паровозиком идут еще несколько: файлы и свойства приёма

    Не понял... файлы в БД хранятся? ну ССЗБ, что ещё сказать...

    Использовать Partitioning для таблицы "приёмы", понятно по годам, а вот для связанных таблиц файлы и свойства приёма, что лучше делать?

    А уже ничего - партиционированные таблицы и внешние ключи несовместимы.

    подумал сделать Partitioning допустим по годам

    Ну вообще-то БСК. Партиционирование преследует несколько целей, но вот уменьшение объёма на диске среди них не встречается.

    есть несколько таблиц, которые занимают 95% места всей БД.

    Начните с установки innodb_file_per_table и вынесения таблиц в отдельные файлы.
    Далее - внимательно просмотрите операции по каждой отдельной таблице, возможно, какие-то из них не нуждаются в поддержке транзакций.
    И совершенно обязательно рассмотрите перемещение файлов в файловую систему.
  • Какой блок адресов CIDR лучше и почему?

    @Akina
    OlegFacius,
    правильно ли я понимаю, что оба диапазона по 16 адресов можно покрыть одной общей маской 194.58.64.0/19 ?

    Ну посчитай адрес бродкаста-то... и посмотри, внутри твои сети или нет.

    Что-то мне понимание принципа объединения этих адресов трудно дается...

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

    @Akina
    можно как-то колонке добавить свойство, что по умолчанию всегда там значения без пробелов?

    Нет. Сервер хранит строго то, что ему доверили на хранение, и дурацких инициатив не проявляет.

    Если не хватает умения тримануть значение до передачи его серверу... ну можно, конечно, написать триггер... но лучше подумать о смене работы на более подходящую.
  • Как правильно получить данные через связанную таблицу?

    @Akina
    Пробовал так, но я явно делаю что-то не так:

    А что не так? Не выполняется, даёт ошибку? Выводит неверные сведения? Что-то ещё?
  • Как посчитать общую длительность времени между строками определенной выборки в MySQL?

    @Akina
    2) Ожидаю увидеть (количество в минутах, число)
    user ; duration
    user1 ; 25
    user2 ; 10

    Поясните, откуда у user2 взялись 10 минут. Я вижу у него 2 входа и ни одного выхода.
  • Как посчитать общую длительность времени между строками определенной выборки в MySQL?

    @Akina
    1. Укажите ТОЧНУЮ версию MySQL.
    2. Покажите требуемый ответ для именно этих данных. Уточните: если два входа подряд - считать от первого или от последнего? а если два выхода подряд?
    3. Замените (либо добавьте) табличный вид примера данных на скрипты CREATE TABLE + INSERT INTO. Ещё лучше - создайте online fiddle и дайте ссылку. Пример данных должен включать все вышеперечисленные "некорректности данных".
  • Как правильно получить данные через связанную таблицу?

    @Akina
    Не описывайте словами - Вы не умеете.
    Просто выложите вывод SHOW CREATE TABLE tablename;для обеих таблиц.
    Ещё лучше - с примером данных (сделайте дампы таблиц, отредактируйте, оставив 5-7 записей, и выложите).
  • По каким столбцам фильтровать данные, которые уже были загружены и грузить только новые данные?

    @Akina
    Ответ зависит от того, какая именно СУБД, и даже какая точно версия.
    Кстати, и решение исходной задачи - тоже зависит от этих данных.
  • Данные следующей строки?

    @Akina
    Задача, вывести рядом значения следующего дня.

    Любые, или тоже соответствующие условию WHERE?
  • По каким столбцам фильтровать данные, которые уже были загружены и грузить только новые данные?

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

    Вот не судьба. Телепаты - в отпуске. Хрустальный шар - в ремонте. По предсказаниям - двойка.

    Или объясняй, подробно и внятно, всё с этими данными связанное, ну и что куда должно выгружаться и загружаться, и вообще о чём речь... или получишь одни предположения и догадки, и будешь думать, куда их прислонить.
  • Как из ячейки с гиперссылкой получить имя книги для формулы?

    @Akina
    Формула ссылается на тот же лист, на котором находится нужная ячейка, или она на другом листе? Гиперссылка - на открытую книгу или на книгу на диске?
  • Как в БД ко всем значениям в одной колонке применить trim?

    @Akina
    Beliyadm, в MySQL есть TRIM(). Которая и обладает гораздо более широкими возможностями, и более удобна, и вообще одна всё сделает.
  • Как в БД ко всем значениям в одной колонке применить trim?

    @Akina
    1. Что значит - как? запросом UPDATE.
    2. Да, можно. Триггерами BEFORE INSERT и BEFORE UPDATE.
  • Node + pg. Как вставить множество строк в таблицу?

    @Akina
    А зачем Вам RETURNING? Убедиться, что масло таки масляное, а сервер в остальные поля записал именно значения по умолчанию, а не какую-нибудь придуманную на лету хрень?
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    Нет, не обычная, это может привести к нарушению целостности данных, что повлечет за собой ряд других ошибок

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

    как Вы собираетесь связывать новые сущности с только что добавленной записью без дополнительного SQL запроса, который позволит получить ID записи?

    ??? Вы о существовании INSERT .. SELECT знаете? или всю жизнь пользовались только INSERT .. VALUES?

    реализация хранения данных не должна быть тесно связана с бизнес-логикой приложения.

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

    Сегодня Вы используете MySQL, завтра захотите PostgreSQL, потом Microsoft SQL Server и все эти автоматически генерируемые идентификаторы, триггеры, хранимые функции и другая логика принесут немало хлопот, поэтому учитесь проектировать приложение правильно. Нельзя, чтобы база данных управляла приложением.

    Вы сегодня пишете код на питоне, завтра захотите перейти на шарп, потом на джаву... в чём разница с утверждением про изменение SQL-сервера? ни в чём. У Вас выбранный язык (или даже фреймворк в рамках того же языка) управляет приложением - но это Вас как-то не беспокоит... Нельзя, чтобы выбранное средство создания приложения управляло приложением - Ваш тезис, просто применённый к тому, о применении к чему Вы даже помыслить боитесь. Так что не надо про "правильное проектирование приложения".
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    entermix,
    может произойти ошибка, например, в связи с недостаточной проверкой данных

    Ну произошла ошибка... и что? Уйдёт багрепорт, код допишется и будет нормально проверять входные данные. До следующего багрепорта. Обычная ситуация.

    Если первичный ключ не нужен на стороне клиента (backend), то как связать новые сущности с только что созданной записью в базе данных?

    ??? Связывание на основании первичного ключа как существующий объект - фикция.

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

    А именно связывание на основании, как сущность, а не процесс - это всего лишь абстракция в нашем мозге.

    PS. Всё обсуждение - имхо последствие попытки низвести SQL-сервер до роли тупого хранилища данных. И выполнять абсолютно всю обработку на клиенте. Тебе дали - храни. С тебя спросят - отдашь.

    Да, выполнять обработку клиент будет скорее всего плохо и криво... но это совсем другая сказка.
  • Где лучше генерировать uuid для базы? В коде или в sql запросом?

    @Akina
    entermix, вот очень интересно, с чего был сделан столь вопиюще странный вывод, что запись не будет сохранена в БД? когда всё с точностью до наоборот - UUID генерируется и сохраняется в БД, но не попадает на клиентскую сторону, ибо там он нахрен не нужен.
  • Range и Rows в оконных функциях же работают оба с диапазонами строк?

    @Akina
    Я дал fiddle. Где всё прекрасно видно. Если тебе графически проще понимать - нарисуй данные из fiddle.

    Нашел такое пояснение для range. Оно верное?

    На этот вопрос тебе никто не ответит. Текста запроса нет...