Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [mysql] Оптимизация запроса c субселектом 
V
    Опции темы
Sanchezzz
Дата 4.12.2012, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: нет
Всего: 60



Добрый день нужно оптимизировать следующий запрос 
Код

set @n:=0;    
SELECT T1.* FROM ( 
        SELECT @n := @n +1 AS rownum, id, `company_procent`
    FROM  `company`    ORDER BY  `company_procent` DESC
) as T1 WHERE T1.id IN (1,3,5,8)

Запрос сортирует все записи  по числу ( число обозначает на сколько хорошо заполнен профиль компании) что бы узнать на какой позиции компания по заполненной информации.



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Akina
Дата 4.12.2012, 12:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Единственная видимая оптимизация - это ввести LIMIT в подзапрос. В конкретно этом запрос - LIMIT 8.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sanchezzz
Дата 4.12.2012, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: нет
Всего: 60



Да лимит помог
А почему именно 8 а не 4 ?


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Akina
Дата 4.12.2012, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Sanchezzz @  4.12.2012,  15:33 Найти цитируемый пост)
почему именно 8 а не 4 ? 

Потому что ежели 4, то получишь первые 4 записи (id=1..4)... а тебе нужны 5-я и 8-я...

Добавлено через 1 минуту и 41 секунду
Так, стопчик... а ты вообще отбираешь не по вычисленному номеру записи... тогда лимит вообще тут неприменим.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sanchezzz
Дата 5.12.2012, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: нет
Всего: 60



Цитата

Так, стопчик... а ты вообще отбираешь не по вычисленному номеру записи... тогда лимит вообще тут неприменим. 
 Ага, мне пришлось темные силы заставили.

Пока оставил как есть без лимита  и в реалтайме показываю из мемкеша 
Скорее всего перерасчет позиции в каталоге вынесу в крон и раз в день и буду у компании обновлять позицию в каталоге.




--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Akina
Дата 5.12.2012, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Sanchezzz, а сколько всего записей в таблице company? овчинка выделки-то стОит?
Опять же - как часто меняется значение поля company_procent? если редко - мож сгрюкать отдельную таблицу с номерами, и апдатить её из триггера?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sanchezzz
Дата 10.12.2012, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: нет
Всего: 60



Akina почти 9-10к компаний с одного города загрузи для теста около 5к.
Каждый пользователь имеет N добавленных лично компаний но на главной странице выводится 4 из последних добавленных пользователем.
company_procent - это поле на сколько профиль компании заполнен, меняется всегда когда пользователь редактирует компанию.












--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Akina
Дата 10.12.2012, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Т.е. изменение company_procent только интерактивно? Тогда однозначно отдельная таблица с обновлением по триггеру.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sanchezzz
Дата 10.12.2012, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: нет
Всего: 60



ага. 
А если доп поле сделать где номер указываем компании в каталоге, перерасчет делаем по крону каждые 3 часа. 
Что бы не привращять в систему реалтайм.
Этот функционал только для того что бы вывести на главной странице 4 компании и на каком они месте smile идиотизм)
Возможно этот бесполезный функционал и не будет реализован и заменен на скрытый рейтинг )


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
tzirechnoy
Дата 10.12.2012, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



Цитата
А если доп поле сделать где номер указываем компании в каталоге, перерасчет делаем по крону каждые 3 часа. 


Из соображэний скорости, пожалуй, лучшэ будет не доп.поле, а отдельную таблицу. Хотя да, я понимаю, это в общем странности современных SQL-движков.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0812 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.