Я делаю стандартный функционал уведомлений для пользователей и у меня встал вопрос оптимизации который достаточно важен. Что лучше: делать выборку записей из таблицы по ID или записывать этот ID в одно из полей формата JSON, доставать ВСЕ записи, и циклами на бэкенде определять какие записи выводить.
То есть как вообще работает MySql в этом плане? Когда делается выборка по определённым условиям это же по сути берутся ВСЕ записи и проверяются условия по ним, что аналогично тому же - взять ВСЕ записи из бд без условия и обработать уже их на бэкенде?? И в том и в другом случае берутся все записи, и расход ресурсов получается одинаковый ?
И в том и в другом случае берутся все записи, и расход ресурсов получается одинаковый ?
Да близко не лежало!
Сто пудов ID - это первичный ключ. Значит, индексирован. А выборка из индекса, который сортированный список, выполняется намного быстрее, чем из несортированного списка последовательным сканированием.
Что лучше: делать выборку записей из таблицы по ID или записывать этот ID в одно из полей формата JSON, доставать ВСЕ записи, и циклами на бэкенде определять какие записи выводить.
Лучше - когда каждый занят своим делом. MySQL работает с данными и выдаёт только то, что требуется. а бэк по этим данным спамит рассылками.