Shavadrius, это полностью самописный проект. На самом деле все просто, это карточка оффера, в ней в том числе поля с данными организации, они должны выводиться на сайтах по порядку. JSON_REMOVE даже не затрагивает эти поля, удаляет другие данные оффера, но поля все равно портятся.
Shavadrius, Есть страница в админке откуда порядок приходит уже через $_POST, так было сделано давно, в PHP все работало много лет. Сортировать не выгодно, лишнее место где надо будет застревать, к тому же там ключи на разных языках и могут добавляться.
Единственный нормальный вариант переделать страницу в админке, но тогда изменится сам JSON и надо будет править еще скрипты, которые надо еще вспомнить - пока идеально оставить на PHP.
PHP на ваш стандарт похоже наплевал, все кодируется и раскодируется с сохранением порядка ключей. Вам нужно понимать суть вопроса. А если вам важно и вы считаете в своих силах заниматься научением "как надо правильно" это делать без ненужных эпитетов.
В вашей информации как всегда мало пользы. Хотя если честно я узнал что-то новое про "тип данных JSON" и на том спасибо. И смысл этого типа ? Функции mysql работают на текстовом поле. Он как то иначе хранится и работает быстрее ?
Akina, угомонись, в комментариях уже и те все поняли, мне Lastor сказал JSON тут вычислительно дорого, а другой товарищ сказал, что без JSON глупо - я всем доволен. Общаться с тобой мне не хочется - ты такой же как второй товарищ долго запрягаешь потом просто так же ответишь.
Akina, вопрос решен - понимаешь ? Mysql стоит 8 или даже MariaDB на другом компе, доволен ? Вопроса тут не понял ты и потому "вздрючился" но я в том не виноват, ты уточнил я ответил - но ты остался недоволен уточнением, я не могу тебе в этом помочь.
Akina, тогда снова повторюсь ответ не имеет смысла, тем более уточняющие вопросы хрень, я уже понял максимум толковых советов, чем от Lastor я тут не получу, сейчас тебе версию MYSQL подавай - потом снова будет недоволен, а где версия убунты и тп
P.S. я же не олень северный - логика есть у тебя ? Весь софт на сервере обновляется периодически - поэтому догадывайся, что все свежее - если тебе это важно для решения.
Ипатьев,
Вот таблица - логины дублируются, но JSON разложен на ID и properties
А второй вариант записывается в одно поле весь JSON массив
Вопрос простой, а ответ хрен поймешь обо всем на свете по немного и не о чем одновременно.
Ипатьев, господи вот дурак, просто дедлоки в mysql реально достают и я пока не разобрался в них даже на 25% Чего пришел не одного полезного слова не написал в теме, бывшие заслуги что-ли требуют гадить в сети.
Ипатьев, Дурацкий вопрос уже решен. Отчаливай, спец. Догадливым тоже быть полезно, а придираться к каждому слову и дурачок может. Будет нужен сделаю - я не буду редактировать эти строки по ключу. Я понимаю с ним может быстрее удалять и делать UPDATE, или чтобы не было дедлоков, но в данном случае придется обойтись.
Ипатьев, сразу видно говоруна, важно говорить умеем, делать не факт. Я могу сделать первичный ключ одним движением - но он мне тут не нужен. Я не знаю как мне его тут использовать и что он тут сможет оптимизировать. Я все равно буду делать выборку по логину и дал полю логин index mysql для скорости.
Вот в этом и был вопрос хранить как JSON и кодировать всю строку при каждом изменении или разложить на столбцы.
P.S. не 50 колонок - будет всего одна лишняя колонка, я описал выше.
Сам по себе ответ бессмысленный, ибо выше уже решен насколько это возможно. Структура данных описана это массив из 50 элементов длиной 10КБ, нужны самые простые функции массива добавить и удалить, искать сортировать и тп не нужно. Первичный ключ в этой таблице не нужен.
JOIN по json точно не нужен, он скорее был бы удобнее по Login и данные одной строкой в столбце Data бы пригодились. Но если JSON не оптимален можно этим пожертвовать и написать второй SELECT
Интересно! Читать скорее всего нужно будет все.
Даже если нужно часто добавлять по строке и удалять по строке - все равно лучше JSON ?
P.S. Немного сам себе противоречу - ведь удаление по ID и есть в какой-то мере поиск.
Akina, читать по разному, но скорее всего все сразу. Писать и добавлять. А еще удалять по одному. Разные варианты, иначе вопрос бы не имел смысла. Как раз в том, что JSON нужно кодировать раскодировать всегда, даже если я используя JSON функции mysql - я так понимаю они делают практически тоже самое что json_decode.