За последние 24 часа нас посетили 21948 программистов и 988 роботов. Сейчас ищут 627 программистов ...

Поиск по JSON полю в MySQL

Тема в разделе "PHP для новичков", создана пользователем Sergey_Tsarev, 15 дек 2018.

Метки:
  1. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Добрейших вечеров!
    Вопрос такой: в интернет-магазине создается товар. Для этого товара соответственно создается в базе запись. Но у товара могут быть модификации (цвет, размер и т.д.). Как лучше хранить модификации? Создать таблицу модификаций и хранить каждую модификацию отдельно? Или записывать все модификации в JSON-поле? Мне нравится вариант с JSON. Но смущает поиск по параметрам. Если пользователь будет искать товар, например красного цвета, то какой поиск будет быстрее по JSON-полю или по отдельной таблице? Или как вариант отфильтровать результат на PHP?
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
  3. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Скорость поиска по порядку:
    1) По "обычному индексу"
    2) По "полнотекстовому" индексу
    3) Без индекса
    * "вариант отфильтровать результат на PHP" - где-то на уровне 3-го для небольшого объёма данных и 4-ое место для больших данных.

    Как-то так...
    --- Добавлено ---
    Ах да, для юниоров: JSON это 2-ое или 3-е место, в зависимости от.
     
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @Chushkin я не тестил но думаю json extract все таки быстрее полнотекстового поиска. Тут скорее проблема в том что json появился только в 5.7 и орм еще не особо с ним дружат. Плюс нету многих фишек. Многое придется писать самому.
     
  5. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    @Chushkin, ну фильтровать на PHP я бы и не стал) Хочется сделать с использованием JSON. Но есть опасения именно при работе с большими объёмами данных. Придётся наверное протестировать.