- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Загрузили бы my.cfg или my.ini т.е. настройки mysql вашей.
my.cnf
innodb таблиц нет.
только Myisam.
Сервер:
revered, подскажите, чем Вам не подошёл запрос, который описан в ответе Оптимизайка?
Мой совет ниже будет практически на 100% аналогичен:
Сразу оговорюсь, что с Mysql не работал достаточно давно, если не учитывать небольшие пересечения с mysql-подобным синтаксисом в SphinxQL, то наверное, лет 6-7, больше с MongoDB стыкался, ну и последние несколько месяцев часть функционала на PostgreSQL перевели на проекте.
Поэтому может я что-то не то понимаю в задаче. Но из тех запросов, что выше есть, можно сделать вид, что будет достаточно простенького объединения и нескольких индексов.
ALTER TABLE `organization_category` ADD INDEX `organization_id` (`organization_id`);
ALTER TABLE `organization_category` ADD INDEX `category_id_organization` (`category_id`);
ALTER TABLE `organization` ADD INDEX `city_organization` (`city`);
ALTER TABLE `organization` ADD INDEX `com_organization` (`id`,`status`);
Теоретически может понадобится индекс по name.
Ну и предполагается, что у вас уже есть PRIMARY-индекс на `organization`. `id`
SELECT * FROM `organization`, `organization_category` WHERE `organization_category`.`organization_id` = `organization`.`id` AND `organization_category`.`category_id`=90 AND`organization`.`city`=518 AND `organization`.`status`=1 ORDER BY `name` ASC LIMIT 0,20
Четвертый индекс непонятно нужен или нет, но если одобрённых (? `status`=1) очень много, то это может приводить к скану всей таблицы, поэтому уменьшаем количество записей в индексе, которые нам нужно просмотреть через объединённый индекс по `id` и `status`.
`id` мы уже перед этим и так уже получаем в ходе работы запроса
p.s. В Mysql не хватает хорошего аналога EXPLAIN ANALYZE из PostgreSQL, он был бы не лишним.