Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何优化这些查询?_Php_Mysql_Inner Join - Fatal编程技术网

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正是我的意思。