| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > [mysql] Оптимизация запроса c субселектом |
| Автор: Sanchezzz 4.12.2012, 12:03 | ||
Добрый день нужно оптимизировать следующий запрос
Запрос сортирует все записи по числу ( число обозначает на сколько хорошо заполнен профиль компании) что бы узнать на какой позиции компания по заполненной информации. |
| Автор: Akina 4.12.2012, 12:16 |
| Единственная видимая оптимизация - это ввести LIMIT в подзапрос. В конкретно этом запрос - LIMIT 8. |
| Автор: Sanchezzz 4.12.2012, 14:33 |
| Да лимит помог А почему именно 8 а не 4 ? |
| Автор: Akina 4.12.2012, 14:39 |
Потому что ежели 4, то получишь первые 4 записи (id=1..4)... а тебе нужны 5-я и 8-я... Добавлено через 1 минуту и 41 секунду Так, стопчик... а ты вообще отбираешь не по вычисленному номеру записи... тогда лимит вообще тут неприменим. |
| Автор: Sanchezzz 5.12.2012, 12:31 | ||
Пока оставил как есть без лимита и в реалтайме показываю из мемкеша Скорее всего перерасчет позиции в каталоге вынесу в крон и раз в день и буду у компании обновлять позицию в каталоге. |
| Автор: Akina 5.12.2012, 12:37 |
| Sanchezzz, а сколько всего записей в таблице company? овчинка выделки-то стОит? Опять же - как часто меняется значение поля company_procent? если редко - мож сгрюкать отдельную таблицу с номерами, и апдатить её из триггера? |
| Автор: Sanchezzz 10.12.2012, 17:03 |
| Akina почти 9-10к компаний с одного города загрузи для теста около 5к. Каждый пользователь имеет N добавленных лично компаний но на главной странице выводится 4 из последних добавленных пользователем. company_procent - это поле на сколько профиль компании заполнен, меняется всегда когда пользователь редактирует компанию. |
| Автор: Akina 10.12.2012, 17:08 |
| Т.е. изменение company_procent только интерактивно? Тогда однозначно отдельная таблица с обновлением по триггеру. |
| Автор: Sanchezzz 10.12.2012, 17:28 |
| ага. А если доп поле сделать где номер указываем компании в каталоге, перерасчет делаем по крону каждые 3 часа. Что бы не привращять в систему реалтайм. Этот функционал только для того что бы вывести на главной странице 4 компании и на каком они месте Возможно этот бесполезный функционал и не будет реализован и заменен на скрытый рейтинг ) |
| Автор: tzirechnoy 10.12.2012, 20:47 | ||
Из соображэний скорости, пожалуй, лучшэ будет не доп.поле, а отдельную таблицу. Хотя да, я понимаю, это в общем странности современных SQL-движков. |