Php 如何优化此查询以更快地从中获得结果?
我有一个查询,我执行了很多次。你能建议如何优化这个吗?索引已应用于表Php 如何优化此查询以更快地从中获得结果?,php,mysql,Php,Mysql,我有一个查询,我执行了很多次。你能建议如何优化这个吗?索引已应用于表 SELECT DISTINCT b.appearance_id, b.photo_album_id, b.eventcmmnt_id, b.id, b.mem_id, b.subj, b.body, b.date, b.parentid, b.from_id, b.visible_to, b.image_link, b.po
SELECT
DISTINCT b.appearance_id,
b.photo_album_id,
b.eventcmmnt_id,
b.id,
b.mem_id,
b.subj,
b.body,
b.date,
b.parentid,
b.from_id,
b.visible_to,
b.image_link,
b.post_via,
b.youtubeLink,
b.link_image,
b.link_url,
b.auto_genrate_text
FROM
bulletin b
INNER JOIN
network n
ON
( n.mem_id = b.mem_id )
WHERE
b.parentid = '0' AND
'$userid' IN (n.frd_id, b.mem_id))
GROUP BY
b.id
ORDER BY
b.date DESC
LIMIT
0,20
network.frd\u id
、network.mem\u id
和bulletin.mem\u id
是否都已编制索引?如果没有,如果表中有一些较大的卷,您将处于混乱状态
另外,和((n.frd\u id,b.mem\u id)中的“$userid”
在成本方面非常糟糕。如果可能,您应该始终坚持使用=
,=代码>等等。是否可以将此行替换为和('$userid'=n.frd\u id或'$userid=b.mem\u id)
最后,如果您正在查看一些重要的记录量,那么重新排序表可能是您的一大胜利。我在工作中运行一些繁重的数据库,其中包含由键值标识的大量数据。通常,我希望将这些值聚合到某个级别。我发现偶尔运行altertablesometablename命令,按col1,col2
将记录分组到可能被聚合或筛选在一起的块中,这是一个巨大的改进。起点:按b.id分组到底是为了什么?您似乎没有使用任何聚合。“分组方式”可能很昂贵。由此得出的结论是:确保为所有加入的列编制索引。是否可以增加查询缓存大小?@user1551419添加了另一个关于重新排序表的部分。