查询堆栈溢出数据库以获取问题及其答案的最有效方法



所以我试图查询堆栈溢出数据库中的一个问题及其答案。到目前为止,我遇到了两种方法:

SELECT questions.Id as [Post Link], questions.title, answers.body, questions.viewcount
FROM Posts answers
INNER JOIN Posts questions ON answers.parentid = questions.id

第二种方式是

SELECT * # Replace the actual fields
FROM posts 
WHERE (Id = {POST_ID}) OR (ParentId = {POST_ID})
ORDER BY PostTypeId ASC, Score DESC

哪种方法更好,为什么?有别的方法吗?sql中是否有一个术语来表示这种父子关系。关于如何设计高效的查询,我有什么可以研究的话题吗?

如果两个结果对您来说都一样好,那么这一切都取决于性能。

在性能方面,您可以研究一些事情,例如索引,以及如何将它们用作SQL引擎。

因此,就性能而言,第二个查询可能会更好,因为在那里您可以只查询一个表,而不是两个表(非常明显(。

还有WHERE子句(和第一个查询中的ON(,它们在很大程度上依赖于索引。

由于Id列经常被idexed,所以第二个查询似乎非常有效。

相关内容

  • 没有找到相关文章

最新更新