Вам нужно проработать архитектуру таблиц.
Чтобы удобно хранить свойства ads и serp в одной таблице, которые представленные в виде массива. Вам нужно не только выделить тип записи - ads или serp, но нужно как-то связать все записи, которые входят в одно событие свойства p1.
Допустим, для событий мы создаем таблицу Event со свойствами:
Event_Id - код события,
info - строка или JSON-тип,
success - число,
query - строка или JSON-тип,
total_count - число
...
Не все свойства p1 перечисляю, так как, например, paa - тоже массив, и нужно понять, будете ли под него выделять отдельную таблицу или приспособите какую-нибудь существующую, добавив новый тип - paa.
-----
А для хранения элементов массивов ads, serp (и, возможно еще каких-либо свойств-массивов, которые появятся непосредственно в p1 не во вложенных свойствах) вы создадите отдельную таблицу event_prop_array:
prop_arr_Id - код элемента свойства события
prop_id - тип свойства из таблицы-справочника типов свойств (внешний ключ)
event_id - событие, к которому относится запись, внешний ключ к таблице event
link - строка
snippet - строка
...
дальше идут другие скалярные свойства, которые можно найти в одном элементе ads или serp
------
Добавляем таблицу справочник, чтобы закодировать внешний ключ prop_id
Таблица event_prop
prop_id - код свойства
prop_name - имя свойства
----------------------------
Теперь, чтобы залогировать один элемент p1 нужно сделать так:
1. Вставить в таблицу event запись из простых свойств (info, success, query, total_count, ... )
2. Получить event_id вставленной записи (гуглите last_insert_id для PDO или дополнительную клаузу для insert - "returning event_id into :event_id", если вы используете, например, oracle, а не mySQL)
3. Получить prop_id из справочника (тут обычный select)
4. В цикле вставляете записи в таблицу event_prop_array, используя известные event_id, prop_id и текущие свойства элемента ads.
5. Тоже самое как 4, но используете свойства serp.
-------------------
Когда сформируете лог в базе, то типичный запрос для выборки чего-либо будет иметь вид:
select e.*, ep.*, epa.*
from event_prop_array epa
join event_prop ep on ep.prop_id = epa.prop_id
join event e on e.event_id = epa.event_id
-- какие-то условия для поиска
where e.event_id = 1
and ep.prop_name = 'ads'