Оптимизируйте запрос с помощью трехстороннего СОЕДИНЕНИЯ

У меня есть следующий запрос, что предлагает сделать это лучше и как избежать нулевых значений.

SELECT stream.id AS status_id, 
       members.username, 
       members.membership_type, 
       members.first_name, 
       members.last_name, 
       stream.member_id, 
       stream.url_preview,
       stream.media,
       stream.images,  
       stream.poll_id, 
       stream.status_type, 
       stream.created_at, 
       stream.activity_text, 
       stream.original_id, 
       stream.shared_from 
FROM stream, follow, members 
WHERE follow.follower_id = 239 
AND stream.member_id = members.id
AND (stream.member_id=follow.follower_id OR stream.member_id=follow.member_id) 
AND stream.type = 2 
AND stream.status_type NOT IN (4, 5, 7, 8, 9, 10, 11) 
GROUP BY stream.id 
ORDER BY stream.id DESC 
LIMIT ' . $offset . ', 10;

+----+-------------+---------+--------+-----------------------+-------------+---------+-------------------------+------+-------------+
| id | select_type | table   | type   | possible_keys         | key         | key_len | ref                     | rows | Extra       |
+----+-------------+---------+--------+-----------------------+-------------+---------+-------------------------+------+-------------+
|  1 | SIMPLE      | stream  | index  | member_id             | PRIMARY     | 4       | NULL                    |    1 | Using where |
|  1 | SIMPLE      | members | eq_ref | PRIMARY               | PRIMARY     | 4       | portal.stream.member_id |    1 |             |
|  1 | SIMPLE      | follow  | ref    | follower_id,member_id | follower_id | 4       | const                   |   14 | Using where |
+----+-------------+---------+--------+-----------------------+-------------+---------+-------------------------+------+-------------+

1 ответ

Да, совершенно очевидно, что вы используете старый стиль соединения, но если вам нужно избегать NULL значение для отображения в данных, тогда вы можете использовать функцию IFNULL(), чтобы избежать NULL.

Пример:-

select ifnull(members.username,'this is null part') as username from table_name;

Этот запрос напечатает нулевую часть, если имя пользователя равно нулю, либо он напечатает только имя пользователя.

Вы можете обратиться ко всему столбцу, когда выбираете данные столбца в своем запросе.

Надеюсь, это поможет вам.

Другие вопросы по тегам