Vanya Huk: Сорри, начиная с версии MySQL 5.6 полнотекстовый поиск поддерживается и в InnoDB.
Значит просто добавляете FULLTEXT индекс на нужные колонки
CREATE FULLTEXT INDEX `productsFT` ON `products`(`title`);
CREATE FULLTEXT INDEX `brandsFT` ON `brands`(`title`, `tags`);
и используете вместо LIKE
WHERE MATCH(`p`.`title`) AGAINST ('лампа') OR MATCH(`b`.`title`, `b`.`tags`) AGAINST ('лампа')
Vanya Huk: Для полнотекстового поиска надо сначала таблицу модифицировать - перевести таблицу на движок MyISAM и добавить полнотекстовые индексы по нужным полям. При этом на этой таблице перестанут работать транзакции, внешние ключи и построчная блокировка.
Adamos: Тоже может быть. Только надо смотреть, будет ли вложенный запрос выполняться один раз (как в вашем варианте) или для каждой строки (как у автора).
Александр Шаповал: Что пропускает? Второй COUNT считает все уникальные parent_id. Как у вас реализованы записи первого уровня - у них parent_id равен 0 или NULL?
АртемЪ: Во время сварки большие броски тока. Если кабели идут рядом, то наводка получается достаточно большая. Пожечь, в принципе, ничего не должно, но если при прокладке витой пары допустили развивку пар, то может.
ЕМНИП, стандарт требует расстояния не менее 10 см от витухи до электрики при прохождении рядом более двух метров.
Сергей Соколов: Можно и в общем виде, но всё равно придётся подбирать такие y, чтобы sqrt(1 + 8∙y2) было целым нечётным числом. Хотя, формально, основание системы счисления может быть и отрицательным и дробным числом, но в школах такого обычно не изучают.
Подумайте, какие именно вам нужны ключи. Хотите ли вы считать уникальным посещением заход с разных IP но с одний сессией? А с разных IP, но с одним user_id? Когда определитесь, что будет считаться уникальным, создавайте соответствующие ключи. Возможно предварительно необходимо будет почистить базу от уже имеющихся дублей.
Виктор Серобаба: Логично, что большие. Когда вы в последний раз видели IP-адрес, длиной 255 символов, да ещё и в utf8mb4 (то есть 1021 байт)? Даже для IPV6, при правильном хранении, достаточно 16 байт, а для IPV4 - 4 байт.
А id сессии у вас тоже содержит 255 символов? И тоже в универсальной кодировке?
fOstere: Это вам только кажется, что решение с txt-файлом простое. Начнёте делать - упрётесь в race condition и блокировки файлов. В статических сайтах лайков обычно не делают, а динамические и так работают через базу данных и проще записывать лайки в неё.
Значит просто добавляете FULLTEXT индекс на нужные колонки
и используете вместо LIKE