我正在使用PHP的参数化查询,我有以下两个查询:

SELECT username,question_text 
FROM questions,users 
WHERE questions.question_id = 4 AND questions.user_id = users.user_id

SELECT username, post_text 
FROM posts,users WHERE posts.question_id = 4 
AND posts.user_id = users.user_id ORDER BY posts.post_id ASC

简而言之,这些问题正在“帖子”表中进行讨论,并由其Question_ID引用。

我的PHP代码中有一些冗余代码,因为我不了解足够的MySQL来查询数据库一次以获取我需要这两个查询中需要的结果。

我做得很好,处理PHP代码的冗余部分,还是有更好的方法来实现这一目标?

有帮助吗?

解决方案

使用加入而不是在Where子句中匹配列

SELECT username,question_text 
FROM questions INNER JOIN users on questions.user_id = users.user_id
WHERE questions.question_id = 4

SELECT username, post_text 
FROM posts INNER JOIN users on posts.user_id = users.user_id 
WHERE posts.question_id = 4 
ORDER BY posts.post_id ASC

其他提示

2查询完全可以,将几张表的输出结合在一起不是很干净。

您只需要检查是否在您使用的所有字段上都有所有组合索引,并且它将非常快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top