Php 如何优化这些查询?
我可以在这些查询中避免内部联接吗Php 如何优化这些查询?,php,mysql,inner-join,Php,Mysql,Inner Join,我可以在这些查询中避免内部联接吗 "SELECT posts.status, posts.reports, posts.post_id, posts.reply_counts, posts.sender, posts.content, posts.image, posts.thumb, posts.date, members.username, members.avatar, members.state FROM posts I
"SELECT posts.status, posts.reports, posts.post_id,
posts.reply_counts, posts.sender, posts.content,
posts.image, posts.thumb, posts.date,
members.username, members.avatar, members.state
FROM posts
INNER JOIN members ON posts.sender = members.member_id
WHERE posts.parent_id=0
AND posts.wall_id=0
AND (
(members.status=".MEMBER_STATUS_ACTIVE." AND
posts.reports<".MAX_REPORT_HIDE."
AND posts.status=".POST_STATUS_ACTIVE."
)
OR
".$bAdmin."=1
OR
(".$bMod."=1 AND
posts.status<>".POST_STATUS_DELETED."
)
)
AND posts.private_id=0
ORDER BY posts.post_id DESC, posts.date DESC
LIMIT ".(($pagenum-1) * PAGINATION).",".PAGINATION.";"
"SELECT posts.status, posts.reports, posts.post_id, posts.reply_counts,
posts.sender, posts.content, posts.image, posts.thumb, posts.date,
members.username, members.avatar, members.state
FROM posts
INNER JOIN members ON posts.sender = members.member_id
INNER JOIN notifies ON posts.post_id=notifies.post_id
WHERE notifies.member_id=".$member_id." AND
posts.parent_id=0 AND
members.status=".MEMBER_STATUS_ACTIVE." AND
posts.reports<".MAX_REPORT_HIDE." AND
posts.status=".POST_STATUS_ACTIVE." AND
posts.private_id=0
ORDER BY posts.last_update DESC, posts.date DESC
LIMIT ".(($pagenum-1) * PAGINATION).",".PAGINATION.";"
“选择posts.status、posts.reports、posts.post\u id、,
posts.reply_计数、posts.sender、posts.content、,
posts.image、posts.thumb、posts.date、,
members.username、members.avatar、members.state
发帖
posts.sender=members.member\u id上的内部联接成员
其中posts.parent_id=0
和立柱。墙_id=0
及(
(members.status=“.MEMBER\u status\u ACTIVE.”和
posts.reports
如果匹配存在后需要两个表中的所有行,则应使用内部联接。问题是“为什么要这样做?”这取决于您。如果需要成员
字段,则应联接其表。此外,我认为您应移动成员.status=“.MEMBER\u status\u ACTIVE。"由于性能原因,
转到内部联接成员的ON
子句中。@SAMPro我可以把它移到那里吗?不确定如何移动。如果性能是一个问题,请首先查看您的索引和解释选择的结果……如果您想从两个表中检索数据和/或使用数据进行筛选,则更为准确从每个表中,必须使用联接。@symcbean Yes正是我的意思。