|
|
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Вот есть такой запрос. автор$sql = "SELECT u.id, u.email, u.createtime, u.lastvisit, u.first_name, u.last_name, u.gender, IFNULL(u.locale,'') as `locale`, u.service, IFNULL(u.service_id,'') as `service_id`, IFNULL(u.photo,'') as `photo`, IF((SELECT show_location FROM {{user_settings}} WHERE user_id=u.id)=0, '', IFNULL(u.location,'')) as location, IF((SELECT show_location FROM {{user_settings}} WHERE user_id=u.id)=0, '', IFNULL(u.state,'')) as state, IF((SELECT show_location FROM {{user_settings}} WHERE user_id=u.id)=0, '', IFNULL(u.city,'')) as city, IFNULL(u.about_me,'') as `about_me`, lev.picture as level_url, lev.level as loyalty_level, s.show_clubs AS `show_clubs`, '0' AS 'points', (SELECT SUM(points) FROM {{user_points}} WHERE user_id=u.id) as points, IFNULL((SELECT show_location FROM {{user_settings}} WHERE user_id=u.id),1) as show_location FROM tbl_users u LEFT JOIN {{user_settings}} s ON s.user_id=u.id LEFT JOIN {{reward_levels}} lev ON u.loyalty_level=lev.id WHERE u.id IN ($inQuery);"; Мне не нравится , что уже есть один результат, автор(SELECT show_location FROM {{user_settings}} WHERE user_id=u.id)=0 но его постоянно надо запрашивать для других колонок, как это решить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2013, 14:50:12 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Новичек82, если вопрос по SQL - используйте переменные если по РНР - используйте переменные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2013, 15:52:43 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
artas, Вы бы запрос посмотрели, как я бы использовал php переменную, если например у меня id штук 1000, что 1000 запросов, бред. Чисто в SQL как это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2013, 16:23:18 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Новичек82Вы бы запрос посмотрели, как я бы использовал php переменную, если например у меня id штук 1000, что 1000 запросов, бред. Чисто в SQL как это сделать. Не вижу в том никакого бреда. Есть, конечно, и альтернативное решение - формирование списка из этих 1000 ИДов и получение всего массива данных одним запросом. Есть и промежуточные решения - например, полдучать пакеты данных для 10 или там 30 ИДов... А вот какое решение оптимально - в каждом случае решается индивидуально. PS. ПХП-хлам из запроса следует выбрасывать. И использовать тег SQL-кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2013, 21:29:55 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Новичек82, а зачем вы 5 раз выбираете из юзер-сеттингс таблицы, когда у вас уже есть связка в ФРОМ секции? тут что-то не так или одно из двух (С). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2013, 22:09:30 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
Новичек82Чисто в SQL как это сделать. select ... @a:=(SELECT show_location FROM {{user_settings}} WHERE user_id=u.id), if(@a=0, ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2014, 11:08:07 |
|
||
|
Оптимизация запроса
|
|||
|---|---|---|---|
|
#18+
retvizan, А одним запросом, из php ведь вызываю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 16:11:09 |
|
||
|
|

start [/forum/search_topic.php?author=djhottabych&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 636ms |
| total: | 776ms |

| 0 / 0 |
