因此,我正在尝试查询堆栈溢出数据库中的问题及其答案。到目前为止,我已经遇到了两种方法:
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中有关于此父子关系的术语。我可以研究有关如何设计高效查询的任何主题吗?
答案 0 :(得分:1)
如果两个结果对您都一样好,那一切都取决于性能。
在性能方面,您可以研究几件事,例如索引,以及如何将其用作SQL引擎。
因此,就性能而言,第二个查询可能会更好,因为在那里您只能查询一个表而不是两个表(非常明显)。
此外,您还具有WHERE
子句(在第一个查询中还有ON
),这在很大程度上取决于索引。
由于Id
列经常被忽略,因此第二个查询似乎非常有效。
答案 1 :(得分:0)
这里没有“最好的”这样的东西。与数据库一样。而且这两个查询完全不同并且返回不同的结果。您无法将它们进行比较。
区别是:
def upload_file_drive(folder_id, access_token, path, name):
para = {"name": name, "parents": [folder_id]}
headers = {'Authorization': 'Bearer ' + access_token}
files = {'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'), 'file': open(path, "rb")}
response = requests.post("https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart", headers=headers, files=files)
success_response = response.json()
file_id = success_response['id']
return file_id
join。因此,您的问题没有适当的答案,但我会坚持第一种方法(只需在此处更改JOIN类型)即可。