База будет насчитывать около 10млн записей активных и 30млн не активных
Если это планы на перспективу - не парьтесь, когда(и если) дорастете успеете 10 раз все переписать.
Разделить каждую категорию по таблице или 1 таблицу для всех объявлений
Зависит от того насколько объявления отличаются. Можно общую, можно раздельные, можно общую для пересекающихся полей + дополнительные отдельные. В любом случае 40 000 000 записей это уже тот объем когда надо задуматься о каком то шардировании этого дела, - и это куда более интересный вопрос.
Не активные объявления лучше кидать в отдельную таблицу или просто использовать поле Status?
Хранить в отдельной таблице стоит когда объем активных и архивных отличается хотя бы на порядок. В данном случае это не даст особого профита, но добавит гемороя.
- Какое выражение лучше использовать для поиска? LIKE?
Никакое. Для поиска, особенно на таких объемах надо использовать предназначенные для этого инструменты. Например elasticsearch
habrahabr.ru/company/2gis/blog/213765