- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Тестирую сложный запрос, вроде уже добился времени выполнения в 0,01 сек.
Но по t1 идет перебор 4831 строк и не используется индекс. Хоу подсказать ему использовать индекс, но получаю ошибку синтаксиса.
что не так?
CONCAT('/katalog/',
t2.id,
'-',
t2.alias,
'/',
t1.id,
'-',
t1.alias) as url
FROM
test_bo_items AS t1
LEFT JOIN
test_bo_sections AS t2 ON t1.section_id = t2.id
INNER JOIN
test_mk AS t3 on t3.id= t1.mk_code
FORCE INDEX (t1.mk_code)
WHERE t3.id in (247,250,251,196,943,288,944)
---------- Добавлено 07.04.2020 в 11:09 ----------
Вот так ошибка пропала
test_bo_items AS t1
FORCE INDEX (mk_code)
Но ни FORCE ни USE не заставляют использовать индекс
что не так?
С большой вероятностью MySQL сам подберёт нужный индекс, если он существует.
(есть ли индекс t1.mk_code?
В указанном запросе в первом JOIN-е уже задействовано поле из этой таблицы
t1.section_id и если t1.mk_code индекс по одному полю mk_code, то в данном случае он не применим.
А может тип поля сменить?
У меня сейчас поле mk_code -varchar(100)
Данные там хранятся так -
Больше 30 символов в поле нет
Dram, хинты для индексов используйте после FROM.
Вместо INNER JOIN можно использовать STRAIGHT_JOIN.
Попробуйте INNER JOIN поднять выше, я так понимаю логики запроса он не изменит.
Составной индекс на id, mk_code есть?
Где EXPLAIN и структура таблиц?