Php 性能最佳的MySQL查询

Php 性能最佳的MySQL查询,php,mysql,database,Php,Mysql,Database,我有一个mysql数据库,在这里我需要执行一个更大的mysql查询。 用户A在表中有一行名为users。在名为trackers的字段的值中,有一个逗号分隔的值,其中包含用户a接收通知的朋友ID MySQL->用户表->跟踪器字段->2,3,4值 MySQL服务器必须在一个查询中用逗号分隔值。我认为,如果服务器只执行一个查询,而不是使用PHP foreach对每个值执行一个查询,那么对服务器来说会更友好 我需要这样一个查询:SELECT*FROM users,其中在SELECT trackers

我有一个mysql数据库,在这里我需要执行一个更大的mysql查询。 用户A在表中有一行名为users。在名为trackers的字段的值中,有一个逗号分隔的值,其中包含用户a接收通知的朋友ID

MySQL->用户表->跟踪器字段->2,3,4值

MySQL服务器必须在一个查询中用逗号分隔值。我认为,如果服务器只执行一个查询,而不是使用PHP foreach对每个值执行一个查询,那么对服务器来说会更友好


我需要这样一个查询:SELECT*FROM users,其中在SELECT trackers FROM users,其中id=$me,分隔为,

我一直发现,对于像您这样的查询,执行两个查询通常是最好的解决方案

第一:

SELECT trackers FROM users WHERE `user_id` = $me
然后第二个,将第一个的结果内爆为:

SELECT * FROM users WHERE `id` IN (".implode(',',$results).")

不确定这是否是最好的解决方案,但根据我的经验,在我工作的一些网站上,页面加载时间会有很大的不同。

我的感觉是,表的设计不符合您希望实现的目标。我个人的做法是将追踪者分成一张自己的表格。由于用户基本上是在跟踪另一个用户,因此该表将与用户表链接两次

请参阅下面我建议的表格设计

因此,此设计允许您通过以下查询选择用户正在跟踪的所有用户:

SELECT users.* 
FROM trackers
INNER JOIN users ON id = tracker
WHERE user.id = {your user id}

不要吹毛求疵,但这是一个典型的例子,说明了为什么不应该使用csv字段,而应该使用单独的表…+1用户通过跟踪器拥有多个用户。它基本上只是一个follower/friend表。