试图弄清楚我是否可以减少我的mysql查询以减少与数据库的连接数量。是他们离开所有行,然后只计算某一行匹配某个字符串,如:
mysql_query(
"SELECT *, (COUNT(unread = 1) AS msgsunread)
FROM message_received WHERE user_id = '$uid'");
答案 0 :(得分:2)
你走在正确的轨道上。如果将示例中的count语句扩展为完整子查询,则会得到:
SELECT *,
(SELECT COUNT(*) FROM message_received WHERE unread = 1 AND user_id = $uid) AS unread_count,
FROM message_recieved WHERE user_id = $uid;
你要找的未读数(每一行都有!)。 MySQL应该足够聪明,可以缓存该计数查询的结果,因此您可以通过一个连接有效地执行两个查询。
将计数标记到每一行似乎有点过分,但是......也许这是一个两个查询只是更好的选择的地方 - 你可以尝试使用连接在其他地方进行优化,或者MySQL的其他东西不那么令人讨厌 - 计数是占主导地位的臀部的痛苦。
希望这有帮助!
PS:如果这是PHP,您应该可以通过单个连接执行任意数量的查询 - 只需调用{{ 1}}在调用mysql_query(...)
之前多次。