Я пытаюсь соединить два запроса от 2-х различных таблиц и объединить их в один выберите, но это занимает слишком много времени:Выбор два таблиц занимает слишком много времени
SELECT
p.pid, p.cid, p.date,p.headline,p.content,p.description,
r.reg_id,r.cid,r.year,r.headline,r.description,r.url,r.extra
FROM printers p, readers r
WHERE
(p.headline LIKE '%val%' OR p.content LIKE '%val%' OR p.description LIKE '%val%' OR r.headline LIKE '%val%' OR r.description LIKE '%val%')
AND (p.cid != 37 OR p.cid != 38 OR p.cid != 63 OR p.cid != 64)
AND (p.status = 'online' OR p.status = 'active' OR r.status = 'online' OR r.status = 'active')
AND r.headline_en = ''
Это занимает так много времени, PhpMyAdmin (я использую его чтобы попробовать этот запрос) прокомментировал, что произошла ошибка в C: \ Windows \ Temp \ *. myi. И если я использую mysql-клиент, он будет комментировать это, я должен увеличить пределы памяти. Таблица printers
имеет < 2000 строк, а таблица readers
имеет менее 1000 строк, что не является большой базой данных ... Я предпочитаю оптимизацию, поскольку у меня нет доступа к mysql config на моем хосте.
Пожалуйста, помогите мне, мой запрос неправильный или мне нужно изменить my.cnf ??
Редактировать: если информация отсутствует. Этот запрос предназначен для функции «Поиск» на сайте, поэтому нет ограничений, и они представляют собой две разные таблицы без столбца общего доступа.
Я не вижу никаких условий соединения. Как в вашем запросе подключены таблицы «принтеры» и «читатели»? – zerkms
Декартовые соединения (то есть выбор из двух или более таблиц без установки условий соединения) часто вызывают очень большие ряды. Либо определите условия 'join', либо используйте' limit' для извлечения набора строк в кусках. – Barranka